grpc 1.28.0 → 1.42.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +1824 -22390
- data/etc/roots.pem +592 -899
- data/include/grpc/byte_buffer.h +1 -1
- data/include/grpc/byte_buffer_reader.h +1 -1
- data/include/grpc/compression.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 +375 -0
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/fork.h +1 -1
- data/include/grpc/grpc.h +52 -13
- data/include/grpc/grpc_posix.h +5 -2
- data/include/grpc/grpc_security.h +324 -180
- data/include/grpc/grpc_security_constants.h +20 -0
- data/include/grpc/impl/codegen/README.md +22 -0
- 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 +6 -0
- data/include/grpc/impl/codegen/byte_buffer.h +3 -1
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
- data/include/grpc/impl/codegen/compression_types.h +2 -0
- 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 +80 -54
- data/include/grpc/impl/codegen/log.h +2 -2
- data/include/grpc/impl/codegen/port_platform.h +103 -100
- data/include/grpc/impl/codegen/propagation_bits.h +2 -0
- data/include/grpc/impl/codegen/slice.h +2 -0
- 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 +6 -0
- data/include/grpc/module.modulemap +31 -46
- data/include/grpc/slice.h +1 -1
- data/include/grpc/slice_buffer.h +3 -3
- 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 +4 -4
- 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 +9 -9
- data/src/core/ext/filters/census/grpc_context.cc +1 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +30 -28
- data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
- 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 +2207 -3176
- data/src/core/ext/filters/client_channel/client_channel.h +561 -62
- 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 -5
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +18 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +18 -13
- data/src/core/ext/filters/client_channel/config_selector.cc +59 -0
- data/src/core/ext/filters/client_channel/config_selector.h +145 -0
- data/src/core/ext/filters/client_channel/connector.h +19 -19
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +190 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +26 -122
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -11
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +71 -73
- data/src/core/ext/filters/client_channel/health/health_check_client.h +37 -35
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +43 -40
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +10 -2
- data/src/core/ext/filters/client_channel/http_proxy.cc +59 -34
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +96 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +101 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +26 -13
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +12 -21
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +659 -608
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +76 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +8 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +5 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +5 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +57 -44
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +918 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +757 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +37 -0
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +25 -26
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -47
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +741 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +512 -137
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -26
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +29 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +795 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +701 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1362 -0
- data/src/core/ext/filters/client_channel/lb_policy.cc +29 -35
- data/src/core/ext/filters/client_channel/lb_policy.h +130 -117
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +19 -12
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +12 -10
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +136 -131
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -35
- 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 +20 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +98 -138
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +651 -216
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +32 -5
- 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 +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +79 -68
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +124 -136
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +8 -10
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +384 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +38 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +892 -47
- data/src/core/ext/filters/client_channel/{xds/xds_channel_args.h → resolver/xds/xds_resolver.h} +9 -7
- data/src/core/ext/filters/client_channel/resolver.cc +9 -10
- data/src/core/ext/filters/client_channel/resolver.h +13 -23
- data/src/core/ext/filters/client_channel/resolver_factory.h +10 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +57 -56
- data/src/core/ext/filters/client_channel/resolver_registry.h +10 -10
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +61 -315
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +42 -67
- data/src/core/ext/filters/client_channel/retry_filter.cc +2573 -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 +316 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
- data/src/core/ext/filters/client_channel/retry_throttle.cc +20 -49
- data/src/core/ext/filters/client_channel/retry_throttle.h +4 -2
- data/src/core/ext/filters/client_channel/server_address.cc +132 -13
- data/src/core/ext/filters/client_channel/server_address.h +80 -32
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +156 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +271 -347
- data/src/core/ext/filters/client_channel/subchannel.h +142 -163
- data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -5
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +38 -9
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +27 -12
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +47 -223
- 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 +113 -108
- data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +503 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +181 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +104 -101
- data/src/core/ext/filters/http/client_authority_filter.cc +21 -21
- data/src/core/ext/filters/http/http_filters_plugin.cc +54 -53
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +274 -230
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +398 -0
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +107 -98
- data/src/core/ext/filters/max_age/max_age_filter.cc +74 -70
- data/src/core/ext/filters/message_size/message_size_filter.cc +89 -113
- data/src/core/ext/filters/message_size/message_size_filter.h +12 -5
- data/src/core/ext/service_config/service_config.cc +227 -0
- data/src/core/ext/service_config/service_config.h +127 -0
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/service_config/service_config_parser.cc +89 -0
- data/src/core/ext/service_config/service_config_parser.h +97 -0
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +119 -49
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +24 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +42 -35
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +32 -16
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +52 -88
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +829 -357
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +16 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +14 -6
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +32 -24
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -25
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +11 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +548 -542
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +17 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +5 -6
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +82 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.h +47 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +30 -29
- data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +25 -25
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +15 -16
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +10 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +18 -22
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +9 -9
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +53 -22
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +11 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +25 -25
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +7 -9
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +311 -652
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +241 -72
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +107 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +86 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +69 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +868 -1175
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +102 -84
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +146 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +137 -0
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +46 -0
- data/src/core/ext/transport/chttp2/transport/hpack_utils.h +30 -0
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +77 -56
- data/src/core/ext/transport/chttp2/transport/parsing.cc +168 -320
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +60 -0
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
- 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 +97 -80
- data/src/core/ext/transport/inproc/inproc_transport.cc +263 -180
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1591 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +2 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +18 -6
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +243 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +955 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +371 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1554 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +271 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +494 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2116 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +83 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +56 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +370 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +470 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +382 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1295 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +418 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +84 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +161 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +917 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +171 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +830 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +244 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1089 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +101 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +43 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +132 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +96 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +261 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +125 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +462 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +397 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +33 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +640 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +161 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +680 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +177 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +153 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +550 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +185 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +738 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +82 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +312 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +960 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4213 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +177 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +49 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +298 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +303 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +123 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +403 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1785 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +19 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +35 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +130 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +559 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +73 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +237 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +148 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +674 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +25 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +146 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +535 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +54 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +163 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/srds.upb.c → service/route/v3/rds.upb.c} +8 -8
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +121 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +468 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +205 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +48 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +144 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +96 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +84 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +65 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +184 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +158 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +225 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +343 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +313 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +4 -3
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +10 -10
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +40 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +51 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +148 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +74 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +1 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +2 -2
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +896 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +251 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +943 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +18 -18
- data/src/core/ext/upb-generated/google/api/http.upb.h +74 -36
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +20 -8
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +155 -154
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +881 -524
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +20 -8
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +2 -2
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +16 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +15 -15
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +77 -61
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +20 -8
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +19 -19
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +146 -38
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +5 -5
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +25 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +12 -12
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +48 -47
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +63 -63
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +307 -195
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +44 -16
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +34 -10
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +31 -31
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +186 -72
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +8 -8
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +52 -16
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +29 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +70 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +77 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +66 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +243 -226
- data/src/core/ext/upb-generated/validate/validate.upb.h +1048 -668
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +66 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +155 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +90 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +100 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +178 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +91 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +252 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +424 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +596 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +155 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +136 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +313 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +150 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +144 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +236 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +300 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -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 +59 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -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 +107 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +205 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +201 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -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 +67 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +152 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +982 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +295 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +123 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +79 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +567 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +125 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +196 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +97 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +251 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +142 -0
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +73 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +72 -0
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +80 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +163 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -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/metadata.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +69 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
- data/src/core/ext/{upb-generated/gogoproto/gogo.upb.h → upbdefs-generated/envoy/type/v3/http.upbdefs.h} +10 -10
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +39 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +40 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +71 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +52 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +34 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +332 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +43 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +46 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +68 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -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 +61 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.cc +87 -0
- data/src/core/ext/xds/certificate_provider_store.h +112 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +144 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +69 -0
- data/src/core/ext/xds/xds_api.cc +3965 -0
- data/src/core/ext/xds/xds_api.h +744 -0
- data/src/core/ext/xds/xds_bootstrap.cc +471 -0
- data/src/core/ext/xds/xds_bootstrap.h +125 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +405 -0
- data/src/core/ext/xds/xds_certificate_provider.h +151 -0
- data/src/core/ext/xds/xds_channel_args.h +32 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +2791 -0
- data/src/core/ext/xds/xds_client.h +380 -0
- data/src/core/ext/xds/xds_client_stats.cc +160 -0
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +87 -46
- data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
- data/src/core/ext/xds/xds_http_filters.cc +116 -0
- data/src/core/ext/xds/xds_http_filters.h +133 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +544 -0
- data/src/core/lib/address_utils/parse_address.cc +320 -0
- data/src/core/lib/address_utils/parse_address.h +77 -0
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +159 -46
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +46 -20
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/call_tracer.h +85 -0
- data/src/core/lib/channel/channel_args.cc +50 -29
- data/src/core/lib/channel/channel_args.h +12 -2
- data/src/core/lib/channel/channel_stack.cc +27 -12
- data/src/core/lib/channel/channel_stack.h +38 -23
- data/src/core/lib/channel/channel_stack_builder.cc +6 -16
- data/src/core/lib/channel/channel_stack_builder.h +1 -9
- data/src/core/lib/channel/channel_trace.cc +11 -12
- data/src/core/lib/channel/channel_trace.h +3 -2
- data/src/core/lib/channel/channelz.cc +194 -142
- data/src/core/lib/channel/channelz.h +79 -55
- data/src/core/lib/channel/channelz_registry.cc +42 -22
- data/src/core/lib/channel/channelz_registry.h +4 -2
- data/src/core/lib/channel/connected_channel.cc +13 -12
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/channel/context.h +4 -1
- data/src/core/lib/channel/handshaker.cc +23 -65
- data/src/core/lib/channel/handshaker.h +12 -28
- data/src/core/lib/channel/handshaker_factory.h +10 -2
- data/src/core/lib/channel/handshaker_registry.cc +15 -82
- data/src/core/lib/channel/handshaker_registry.h +29 -12
- data/src/core/lib/channel/status_util.cc +14 -5
- data/src/core/lib/channel/status_util.h +11 -2
- data/src/core/lib/compression/algorithm_metadata.h +1 -0
- data/src/core/lib/compression/compression.cc +10 -6
- data/src/core/lib/compression/compression_args.cc +11 -7
- data/src/core/lib/compression/compression_internal.cc +14 -11
- data/src/core/lib/compression/compression_internal.h +3 -2
- data/src/core/lib/compression/message_compress.cc +7 -3
- data/src/core/lib/compression/stream_compression.cc +2 -1
- data/src/core/lib/compression/stream_compression.h +3 -2
- data/src/core/lib/compression/stream_compression_gzip.cc +2 -1
- data/src/core/lib/compression/stream_compression_gzip.h +1 -1
- data/src/core/lib/compression/stream_compression_identity.cc +3 -4
- data/src/core/lib/compression/stream_compression_identity.h +1 -1
- data/src/core/lib/config/core_configuration.cc +96 -0
- data/src/core/lib/config/core_configuration.h +146 -0
- data/src/core/lib/debug/stats.cc +22 -28
- data/src/core/lib/debug/stats.h +7 -4
- data/src/core/lib/debug/stats_data.cc +16 -14
- data/src/core/lib/debug/stats_data.h +14 -13
- data/src/core/lib/debug/trace.cc +1 -0
- data/src/core/lib/debug/trace.h +2 -1
- data/src/core/lib/event_engine/endpoint_config.cc +45 -0
- data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
- data/src/core/lib/event_engine/event_engine.cc +50 -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 +7 -5
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_iphone.cc +10 -2
- 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 +61 -19
- data/src/core/lib/gpr/log_android.cc +3 -2
- data/src/core/lib/gpr/log_linux.cc +30 -13
- data/src/core/lib/gpr/log_posix.cc +25 -10
- data/src/core/lib/gpr/log_windows.cc +18 -4
- data/src/core/lib/gpr/murmur_hash.cc +5 -3
- data/src/core/lib/gpr/spinlock.h +12 -5
- data/src/core/lib/gpr/string.cc +35 -57
- data/src/core/lib/gpr/string.h +11 -26
- data/src/core/lib/gpr/sync.cc +6 -6
- data/src/core/lib/gpr/sync_abseil.cc +12 -12
- data/src/core/lib/gpr/sync_posix.cc +5 -11
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gpr/time.cc +19 -14
- data/src/core/lib/gpr/time_posix.cc +1 -1
- data/src/core/lib/gpr/time_precise.cc +5 -2
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gpr/time_windows.cc +3 -2
- data/src/core/lib/gpr/tls.h +119 -36
- data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
- data/src/core/lib/gpr/useful.h +79 -31
- data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
- data/src/core/lib/gprpp/arena.cc +2 -1
- data/src/core/lib/gprpp/arena.h +18 -7
- data/src/core/lib/gprpp/atomic_utils.h +47 -0
- data/src/core/lib/gprpp/bitset.h +188 -0
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +39 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +330 -0
- data/src/core/lib/gprpp/{optional.h → examine_stack.cc} +19 -9
- data/src/core/lib/gprpp/examine_stack.h +46 -0
- data/src/core/lib/gprpp/fork.cc +17 -15
- 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 +11 -9
- data/src/core/lib/gprpp/global_config_generic.h +2 -2
- data/src/core/lib/gprpp/host_port.cc +29 -35
- data/src/core/lib/gprpp/host_port.h +14 -17
- data/src/core/lib/gprpp/manual_constructor.h +10 -7
- data/src/core/lib/gprpp/match.h +73 -0
- data/src/core/lib/gprpp/memory.h +9 -3
- data/src/core/lib/gprpp/mpscq.cc +9 -9
- data/src/core/lib/gprpp/mpscq.h +6 -5
- data/src/core/lib/gprpp/orphanable.h +10 -14
- data/src/core/lib/gprpp/overload.h +59 -0
- data/src/core/lib/gprpp/ref_counted.h +123 -86
- data/src/core/lib/gprpp/ref_counted_ptr.h +173 -7
- data/src/core/lib/gprpp/stat.h +38 -0
- data/src/core/lib/gprpp/stat_posix.cc +49 -0
- data/src/core/lib/gprpp/stat_windows.cc +48 -0
- data/src/core/lib/gprpp/status_helper.cc +427 -0
- data/src/core/lib/gprpp/status_helper.h +194 -0
- data/src/core/lib/gprpp/sync.h +106 -43
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/gprpp/thd.h +3 -3
- data/src/core/lib/gprpp/thd_posix.cc +47 -42
- data/src/core/lib/gprpp/thd_windows.cc +7 -12
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/format_request.cc +47 -65
- data/src/core/lib/http/format_request.h +1 -0
- data/src/core/lib/http/httpcli.cc +213 -193
- data/src/core/lib/http/httpcli.h +7 -6
- data/src/core/lib/http/httpcli_security_connector.cc +25 -24
- data/src/core/lib/http/parser.cc +65 -45
- data/src/core/lib/http/parser.h +7 -7
- data/src/core/lib/iomgr/buffer_list.cc +10 -11
- data/src/core/lib/iomgr/buffer_list.h +27 -28
- data/src/core/lib/iomgr/call_combiner.cc +46 -21
- data/src/core/lib/iomgr/call_combiner.h +15 -16
- data/src/core/lib/iomgr/cfstream_handle.cc +10 -8
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +9 -9
- data/src/core/lib/iomgr/combiner.cc +25 -36
- data/src/core/lib/iomgr/combiner.h +3 -2
- data/src/core/lib/iomgr/dualstack_socket_posix.cc +48 -0
- data/src/core/lib/iomgr/endpoint.cc +6 -6
- data/src/core/lib/iomgr/endpoint.h +10 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +60 -48
- data/src/core/lib/iomgr/endpoint_cfstream.h +1 -1
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +32 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +21 -17
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +17 -9
- data/src/core/lib/iomgr/error.cc +285 -115
- data/src/core/lib/iomgr/error.h +280 -115
- data/src/core/lib/iomgr/error_cfstream.cc +17 -10
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +7 -2
- data/src/core/lib/iomgr/ev_apple.cc +359 -0
- data/src/core/lib/iomgr/ev_apple.h +43 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +76 -80
- data/src/core/lib/iomgr/ev_epollex_linux.cc +106 -109
- data/src/core/lib/iomgr/ev_poll_posix.cc +79 -76
- data/src/core/lib/iomgr/ev_posix.cc +15 -16
- 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 +173 -0
- data/src/core/lib/iomgr/event_engine/endpoint.h +52 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +104 -0
- data/src/core/lib/iomgr/event_engine/iomgr.h +42 -0
- data/src/core/lib/iomgr/event_engine/pollset.cc +88 -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 +41 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +114 -0
- data/src/core/lib/iomgr/event_engine/tcp.cc +293 -0
- data/src/core/lib/iomgr/event_engine/timer.cc +62 -0
- data/src/core/lib/iomgr/exec_ctx.cc +15 -12
- data/src/core/lib/iomgr/exec_ctx.h +37 -30
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
- data/src/core/lib/iomgr/executor/mpmcqueue.h +11 -15
- data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
- data/src/core/lib/iomgr/executor/threadpool.h +8 -7
- data/src/core/lib/iomgr/executor.cc +19 -33
- data/src/core/lib/iomgr/executor.h +3 -3
- 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 +1 -0
- data/src/core/lib/iomgr/iomgr.cc +6 -4
- data/src/core/lib/iomgr/iomgr.h +3 -3
- data/src/core/lib/iomgr/iomgr_custom.cc +3 -3
- data/src/core/lib/iomgr/iomgr_custom.h +2 -2
- 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 +3 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +115 -22
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -3
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +18 -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 +38 -15
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/polling_entity.cc +2 -2
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +10 -11
- data/src/core/lib/iomgr/pollset_custom.h +3 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +12 -13
- data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +9 -31
- data/src/core/lib/iomgr/python_util.h +47 -0
- data/src/core/lib/iomgr/resolve_address.cc +14 -9
- data/src/core/lib/iomgr/resolve_address.h +15 -15
- data/src/core/lib/iomgr/resolve_address_custom.cc +48 -62
- data/src/core/lib/iomgr/resolve_address_custom.h +5 -4
- data/src/core/lib/iomgr/resolve_address_posix.cc +21 -30
- data/src/core/lib/iomgr/resolve_address_windows.cc +22 -33
- data/src/core/lib/iomgr/resource_quota.cc +185 -94
- data/src/core/lib/iomgr/resource_quota.h +66 -17
- data/src/core/lib/iomgr/sockaddr.h +2 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +8 -7
- data/src/core/lib/iomgr/socket_factory_posix.h +3 -3
- data/src/core/lib/iomgr/socket_mutator.cc +20 -6
- data/src/core/lib/iomgr/socket_mutator.h +28 -5
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +128 -105
- 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 +25 -22
- data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client.cc +5 -3
- data/src/core/lib/iomgr/tcp_client.h +4 -0
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +31 -43
- data/src/core/lib/iomgr/tcp_client_custom.cc +23 -34
- data/src/core/lib/iomgr/tcp_client_posix.cc +72 -69
- data/src/core/lib/iomgr/tcp_client_posix.h +8 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +31 -23
- data/src/core/lib/iomgr/tcp_custom.cc +77 -71
- data/src/core/lib/iomgr/tcp_custom.h +16 -14
- data/src/core/lib/iomgr/tcp_posix.cc +149 -156
- data/src/core/lib/iomgr/tcp_posix.h +19 -12
- data/src/core/lib/iomgr/tcp_server.cc +12 -11
- data/src/core/lib/iomgr/tcp_server.h +23 -17
- data/src/core/lib/iomgr/tcp_server_custom.cc +72 -94
- data/src/core/lib/iomgr/tcp_server_posix.cc +84 -76
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -16
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +29 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +19 -28
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +46 -42
- data/src/core/lib/iomgr/tcp_windows.cc +44 -47
- data/src/core/lib/iomgr/tcp_windows.h +4 -3
- data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
- data/src/core/lib/iomgr/timer.cc +1 -0
- data/src/core/lib/iomgr/timer.h +7 -3
- data/src/core/lib/iomgr/timer_custom.cc +9 -8
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +46 -76
- data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +17 -14
- data/src/core/lib/iomgr/timer_heap.cc +2 -3
- data/src/core/lib/iomgr/timer_heap.h +2 -3
- data/src/core/lib/iomgr/timer_manager.cc +4 -4
- data/src/core/lib/iomgr/unix_sockets_posix.cc +37 -33
- data/src/core/lib/iomgr/unix_sockets_posix.h +9 -3
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +20 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +8 -9
- 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 +4 -4
- data/src/core/lib/iomgr/work_serializer.h +18 -2
- data/src/core/lib/json/json.h +15 -4
- data/src/core/lib/json/json_reader.cc +31 -37
- data/src/core/lib/json/json_util.cc +126 -0
- data/src/core/lib/json/json_util.h +154 -0
- data/src/core/lib/json/json_writer.cc +14 -15
- data/src/core/lib/matchers/matchers.cc +327 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/profiling/basic_timers.cc +8 -6
- data/src/core/lib/profiling/stap_timers.cc +2 -2
- data/src/core/lib/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 +213 -0
- data/src/core/lib/security/authorization/evaluate_args.h +91 -0
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +171 -0
- data/src/core/lib/security/authorization/sdk_server_authz_filter.h +67 -0
- data/src/core/lib/security/context/security_context.cc +15 -11
- data/src/core/lib/security/context/security_context.h +3 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +21 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.h +8 -5
- data/src/core/lib/security/credentials/credentials.cc +17 -99
- data/src/core/lib/security/credentials/credentials.h +27 -70
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +404 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +81 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +214 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.h +72 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +527 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.h +122 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +60 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -2
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +154 -77
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +10 -7
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +64 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +7 -7
- data/src/core/lib/security/credentials/jwt/json_token.h +3 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +39 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +24 -3
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +25 -35
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -6
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +128 -118
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +25 -14
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +4 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +31 -10
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +12 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +348 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +217 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +455 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +147 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +82 -140
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +74 -167
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -13
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -3
- data/src/core/lib/security/credentials/tls/tls_utils.cc +123 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +51 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +244 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +69 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +35 -10
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +40 -37
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +121 -0
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +97 -0
- data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
- 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 +7 -6
- data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +26 -13
- data/src/core/lib/security/security_connector/security_connector.cc +15 -7
- data/src/core/lib/security/security_connector/security_connector.h +16 -9
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +55 -46
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +9 -7
- data/src/core/lib/security/security_connector/ssl_utils.cc +126 -31
- data/src/core/lib/security/security_connector/ssl_utils.h +40 -34
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +393 -303
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +144 -62
- data/src/core/lib/security/transport/auth_filters.h +1 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +34 -28
- data/src/core/lib/security/transport/secure_endpoint.cc +16 -20
- data/src/core/lib/security/transport/secure_endpoint.h +1 -0
- data/src/core/lib/security/transport/security_handshaker.cc +159 -91
- data/src/core/lib/security/transport/security_handshaker.h +2 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +22 -17
- 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 +10 -13
- data/src/core/lib/security/util/json_util.h +2 -1
- data/src/core/lib/slice/percent_encoding.cc +73 -30
- data/src/core/lib/slice/percent_encoding.h +29 -28
- data/src/core/lib/slice/slice.cc +59 -26
- data/src/core/lib/{gpr/tls_pthread.cc → slice/slice_api.cc} +15 -6
- data/src/core/lib/slice/slice_buffer.cc +8 -8
- data/src/core/lib/slice/slice_intern.cc +23 -32
- data/src/core/lib/slice/slice_internal.h +19 -246
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -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/slice/slice_utils.h +9 -0
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- 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 +3 -48
- data/src/core/lib/surface/call.cc +252 -241
- data/src/core/lib/surface/call.h +12 -6
- data/src/core/lib/surface/call_details.cc +10 -10
- data/src/core/lib/surface/call_log_batch.cc +52 -60
- data/src/core/lib/surface/channel.cc +99 -85
- data/src/core/lib/surface/channel.h +60 -9
- 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 +4 -6
- data/src/core/lib/surface/channel_stack_type.cc +2 -1
- data/src/core/lib/surface/completion_queue.cc +179 -188
- data/src/core/lib/surface/completion_queue.h +18 -17
- 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 +19 -25
- data/src/core/lib/surface/event_string.h +3 -1
- data/src/core/lib/surface/init.cc +44 -74
- data/src/core/lib/surface/init.h +10 -2
- data/src/core/lib/surface/init_secure.cc +36 -17
- data/src/core/lib/surface/lame_client.cc +62 -61
- data/src/core/lib/surface/lame_client.h +5 -0
- data/src/core/lib/surface/metadata_array.cc +2 -2
- data/src/core/lib/surface/server.cc +1314 -1305
- data/src/core/lib/surface/server.h +475 -45
- data/src/core/lib/surface/validate_metadata.cc +55 -24
- data/src/core/lib/surface/validate_metadata.h +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +19 -13
- data/src/core/lib/transport/connectivity_state.cc +32 -23
- data/src/core/lib/transport/connectivity_state.h +33 -17
- data/src/core/lib/transport/error_utils.cc +71 -21
- data/src/core/lib/transport/error_utils.h +16 -4
- data/src/core/lib/transport/metadata.cc +60 -25
- data/src/core/lib/transport/metadata.h +17 -14
- data/src/core/lib/transport/metadata_batch.cc +41 -339
- data/src/core/lib/transport/metadata_batch.h +932 -69
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +718 -831
- data/src/core/lib/transport/static_metadata.h +115 -372
- data/src/core/lib/transport/status_conversion.cc +6 -14
- data/src/core/lib/transport/status_metadata.cc +5 -3
- data/src/core/lib/transport/timeout_encoding.cc +4 -4
- data/src/core/lib/transport/transport.cc +15 -14
- data/src/core/lib/transport/transport.h +29 -13
- data/src/core/lib/transport/transport_op_string.cc +91 -112
- data/src/core/lib/uri/uri_parser.cc +135 -258
- data/src/core/lib/uri/uri_parser.h +60 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +136 -44
- data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -5
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- 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 +18 -17
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +56 -45
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +10 -7
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +116 -55
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -3
- 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_grpc_record_protocol_common.h +2 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +6 -6
- data/src/core/tsi/fake_transport_security.cc +41 -26
- data/src/core/tsi/local_transport_security.cc +41 -74
- data/src/core/tsi/local_transport_security.h +6 -7
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -7
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -2
- data/src/core/tsi/ssl_transport_security.cc +262 -113
- data/src/core/tsi/ssl_transport_security.h +32 -19
- data/src/core/tsi/ssl_types.h +0 -2
- data/src/core/tsi/transport_security.cc +25 -11
- data/src/core/tsi/transport_security.h +22 -10
- data/src/core/tsi/transport_security_grpc.h +3 -3
- data/src/core/tsi/transport_security_interface.h +35 -4
- data/src/ruby/bin/math_services_pb.rb +5 -5
- data/src/ruby/ext/grpc/extconf.rb +25 -9
- data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
- data/src/ruby/ext/grpc/rb_call.c +17 -8
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +62 -17
- data/src/ruby/ext/grpc/rb_channel.c +19 -8
- data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
- data/src/ruby/ext/grpc/rb_channel_credentials.c +24 -5
- data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
- data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +4 -2
- data/src/ruby/ext/grpc/rb_grpc.c +9 -4
- data/src/ruby/ext/grpc/rb_grpc.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +54 -18
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +99 -45
- data/src/ruby/ext/grpc/rb_server.c +19 -6
- data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
- data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
- data/src/ruby/lib/grpc/errors.rb +103 -42
- data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
- data/src/ruby/lib/grpc/generic/client_stub.rb +5 -3
- data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
- data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
- data/src/ruby/lib/grpc/generic/service.rb +5 -4
- data/src/ruby/lib/grpc/structs.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +5 -3
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +3 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +51 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +64 -14
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +42 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/src/ruby/spec/debug_message_spec.rb +134 -0
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +21 -10
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/generic/service_spec.rb +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +29 -7
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/testdata/ca.pem +18 -13
- data/src/ruby/spec/testdata/client.key +26 -14
- data/src/ruby/spec/testdata/client.pem +18 -12
- data/src/ruby/spec/testdata/server1.key +26 -14
- data/src/ruby/spec/testdata/server1.pem +20 -14
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +1764 -0
- data/third_party/abseil-cpp/absl/base/attributes.h +122 -41
- data/third_party/abseil-cpp/absl/base/call_once.h +3 -10
- data/third_party/abseil-cpp/absl/base/casts.h +9 -6
- data/third_party/abseil-cpp/absl/base/config.h +97 -26
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +442 -335
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +169 -0
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +31 -4
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +35 -33
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +17 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +36 -40
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +33 -30
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +11 -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 +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +54 -48
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +47 -109
- data/third_party/abseil-cpp/absl/base/optimization.h +69 -6
- data/third_party/abseil-cpp/absl/base/options.h +31 -4
- data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +95 -40
- data/third_party/abseil-cpp/absl/container/fixed_array.h +532 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +38 -39
- data/third_party/abseil-cpp/absl/container/internal/common.h +206 -0
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +34 -9
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +460 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +161 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +208 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +274 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +322 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +31 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +50 -0
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +743 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +61 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1903 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +139 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1949 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +199 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +80 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +108 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +253 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +93 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +147 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +173 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +36 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1560 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +325 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +349 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +78 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +70 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +1045 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +18 -10
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
- data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
- 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/status/internal/status_internal.h +69 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +396 -0
- data/third_party/abseil-cpp/absl/status/status.cc +452 -0
- data/third_party/abseil-cpp/absl/status/status.h +878 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +38 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/abseil-cpp/absl/strings/charconv.cc +7 -7
- data/third_party/abseil-cpp/absl/strings/cord.cc +1953 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1394 -0
- data/third_party/abseil-cpp/absl/strings/escaping.cc +13 -13
- data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +8 -8
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +543 -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 +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +236 -136
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +150 -64
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +16 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +29 -21
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +21 -14
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +1017 -87
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +17 -3
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +22 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +27 -11
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- 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 +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
- data/third_party/abseil-cpp/absl/strings/str_split.h +39 -4
- data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
- data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +698 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +156 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +428 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2751 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1082 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
- data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
- data/third_party/abseil-cpp/absl/time/clock.cc +585 -0
- data/third_party/abseil-cpp/absl/time/clock.h +74 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +954 -0
- data/third_party/abseil-cpp/absl/time/format.cc +160 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +628 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +386 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1029 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +113 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +965 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +137 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +315 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +116 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
- data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
- data/third_party/abseil-cpp/absl/time/time.cc +500 -0
- data/third_party/abseil-cpp/absl/time/time.h +1585 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/optional.h +9 -9
- data/third_party/abseil-cpp/absl/types/span.h +49 -36
- data/third_party/abseil-cpp/absl/types/variant.h +866 -0
- data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
- data/third_party/boringssl-with-bazel/err_data.c +789 -707
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +57 -52
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +6 -6
- 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 +29 -27
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{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 +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +23 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -22
- 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 +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +196 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +35 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +326 -281
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +120 -273
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +18 -7
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +19 -27
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
- data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +15 -23
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +19 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → dsa/internal.h} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +120 -112
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
- 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 +40 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
- 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 +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +208 -37
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +149 -211
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +11 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +24 -0
- 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 +305 -117
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +22 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -165
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +117 -91
- 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/fork_detect.c +137 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +62 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +150 -56
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +49 -129
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +116 -66
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +135 -63
- 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 +231 -11
- 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 +86 -113
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +618 -0
- 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 +75 -25
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
- 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 +9 -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 +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +131 -53
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -28
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +318 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1399 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +858 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
- 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 +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- 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 +345 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +13 -8
- 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 +1 -180
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- 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 +24 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +29 -23
- 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 +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +52 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +83 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +87 -113
- 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 +99 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +15 -15
- 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 +13 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +52 -28
- 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 +49 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +21 -172
- 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 +25 -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 +75 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +42 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +42 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +27 -36
- 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 +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +128 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +25 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +119 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1035 -625
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -176
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +71 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +29 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +32 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +82 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +39 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +110 -51
- 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/nid.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +194 -146
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +33 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +8 -19
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +135 -63
- data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +697 -194
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +54 -38
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +310 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2071 -826
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -678
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +639 -450
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -22
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
- 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} +1083 -634
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +478 -78
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +122 -56
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +340 -236
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +199 -40
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +607 -209
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +17 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +35 -40
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +77 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +11 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +10 -11
- 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 +169 -111
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +15 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +179 -111
- data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +12 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +53 -30
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +81 -37
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +411 -235
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +183 -166
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +434 -151
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +65 -25
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1261 -0
- data/third_party/re2/re2/dfa.cc +2118 -0
- data/third_party/re2/re2/filtered_re2.cc +137 -0
- data/third_party/re2/re2/filtered_re2.h +114 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2483 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +711 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +1166 -0
- data/third_party/re2/re2/prog.h +455 -0
- data/third_party/re2/re2/re2.cc +1331 -0
- data/third_party/re2/re2/re2.h +1017 -0
- data/third_party/re2/re2/regexp.cc +987 -0
- data/third_party/re2/re2/regexp.h +665 -0
- data/third_party/re2/re2/set.cc +176 -0
- data/third_party/re2/re2/set.h +85 -0
- data/third_party/re2/re2/simplify.cc +665 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +668 -506
- data/third_party/upb/upb/decode.h +50 -3
- data/third_party/upb/upb/decode_fast.c +1053 -0
- data/third_party/upb/upb/decode_fast.h +153 -0
- data/third_party/upb/upb/decode_internal.h +193 -0
- data/third_party/upb/upb/def.c +2168 -0
- data/third_party/upb/upb/def.h +337 -0
- data/third_party/upb/upb/def.hpp +468 -0
- data/third_party/upb/upb/encode.c +346 -213
- data/third_party/upb/upb/encode.h +56 -4
- data/third_party/upb/upb/msg.c +356 -70
- data/third_party/upb/upb/msg.h +84 -45
- data/third_party/upb/upb/msg_internal.h +687 -0
- data/third_party/upb/upb/port_def.inc +187 -84
- data/third_party/upb/upb/port_undef.inc +47 -7
- data/third_party/upb/upb/reflection.c +400 -0
- data/third_party/upb/upb/reflection.h +196 -0
- data/third_party/upb/upb/reflection.hpp +37 -0
- data/third_party/upb/upb/table.c +265 -336
- data/third_party/upb/upb/{table.int.h → table_internal.h} +73 -229
- data/third_party/upb/upb/text_encode.c +449 -0
- data/third_party/upb/upb/text_encode.h +64 -0
- data/third_party/upb/upb/upb.c +189 -135
- data/third_party/upb/upb/upb.h +153 -150
- data/third_party/upb/upb/upb.hpp +112 -0
- data/third_party/upb/upb/upb_internal.h +58 -0
- data/third_party/xxhash/xxhash.h +5325 -0
- metadata +810 -204
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
- data/src/core/ext/filters/client_channel/parse_address.cc +0 -237
- data/src/core/ext/filters/client_channel/parse_address.h +0 -53
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -484
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -181
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -65
- 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/resolving_lb_policy.cc +0 -359
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -122
- data/src/core/ext/filters/client_channel/service_config.cc +0 -261
- data/src/core/ext/filters/client_channel/service_config.h +0 -193
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1779
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -280
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +0 -347
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +0 -87
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -104
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +0 -2174
- data/src/core/ext/filters/client_channel/xds/xds_client.h +0 -274
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +0 -116
- 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/transport/hpack_table.cc +0 -246
- 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/api/v2/auth/cert.upb.c +0 -246
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -905
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +0 -27
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -73
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -390
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1411
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -292
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -847
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -95
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -196
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -168
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -658
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +0 -35
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -132
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -436
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -128
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +0 -30
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -144
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -42
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -104
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -383
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +0 -29
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -17
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -793
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2936
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -62
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -58
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -227
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -296
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1072
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +0 -32
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +0 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -130
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -47
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -108
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -52
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -87
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.c +0 -38
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +0 -49
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +0 -28
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- 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 -144
- 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 -52
- data/src/core/lib/gpr/tls_pthread.h +0 -56
- data/src/core/lib/gprpp/atomic.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -59
- data/src/core/lib/gprpp/string_view.h +0 -60
- data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -87
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/iomgr/pollset_uv.cc +0 -93
- data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
- data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
- data/src/core/lib/iomgr/tcp_uv.cc +0 -418
- data/src/core/lib/iomgr/timer_uv.cc +0 -66
- data/src/core/lib/iomgr/udp_server.cc +0 -752
- data/src/core/lib/iomgr/udp_server.h +0 -101
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
- data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -218
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
- data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
- data/third_party/upb/upb/generated_util.h +0 -105
- data/third_party/upb/upb/port.c +0 -26
@@ -1,20 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
*/
|
1
|
+
//
|
2
|
+
// Copyright 2016 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
|
/// Implementation of the gRPC LB policy.
|
20
18
|
///
|
@@ -51,19 +49,21 @@
|
|
51
49
|
/// \see https://github.com/grpc/grpc/blob/master/doc/load-balancing.md for the
|
52
50
|
/// high level design and details.
|
53
51
|
|
54
|
-
// With the addition of a libuv endpoint, sockaddr.h now includes uv.h when
|
55
|
-
// using that endpoint. Because of various transitive includes in uv.h,
|
56
|
-
// including windows.h on Windows, uv.h must be included before other system
|
57
|
-
// headers. Therefore, sockaddr.h must always be included first.
|
58
52
|
#include <grpc/support/port_platform.h>
|
59
53
|
|
60
|
-
#include "src/core/
|
61
|
-
#include "src/core/lib/iomgr/socket_utils.h"
|
54
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
|
62
55
|
|
63
56
|
#include <inttypes.h>
|
64
57
|
#include <limits.h>
|
65
58
|
#include <string.h>
|
66
59
|
|
60
|
+
#include "absl/container/inlined_vector.h"
|
61
|
+
#include "absl/strings/str_cat.h"
|
62
|
+
#include "absl/strings/str_format.h"
|
63
|
+
#include "absl/strings/str_join.h"
|
64
|
+
#include "absl/strings/strip.h"
|
65
|
+
#include "upb/upb.hpp"
|
66
|
+
|
67
67
|
#include <grpc/byte_buffer_reader.h>
|
68
68
|
#include <grpc/grpc.h>
|
69
69
|
#include <grpc/support/alloc.h>
|
@@ -73,33 +73,33 @@
|
|
73
73
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
74
74
|
#include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
|
75
75
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
|
76
|
-
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/
|
76
|
+
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
|
77
77
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h"
|
78
78
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
|
79
79
|
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
|
80
80
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
81
81
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
82
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
83
82
|
#include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
|
84
83
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
84
|
+
#include "src/core/lib/address_utils/parse_address.h"
|
85
|
+
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
85
86
|
#include "src/core/lib/backoff/backoff.h"
|
86
87
|
#include "src/core/lib/channel/channel_args.h"
|
87
88
|
#include "src/core/lib/channel/channel_stack.h"
|
89
|
+
#include "src/core/lib/channel/channel_stack_builder.h"
|
90
|
+
#include "src/core/lib/config/core_configuration.h"
|
88
91
|
#include "src/core/lib/gpr/string.h"
|
89
92
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
90
93
|
#include "src/core/lib/gprpp/memory.h"
|
91
94
|
#include "src/core/lib/gprpp/orphanable.h"
|
92
95
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
93
|
-
#include "src/core/lib/iomgr/combiner.h"
|
94
96
|
#include "src/core/lib/iomgr/sockaddr.h"
|
95
|
-
#include "src/core/lib/iomgr/
|
97
|
+
#include "src/core/lib/iomgr/socket_utils.h"
|
96
98
|
#include "src/core/lib/iomgr/timer.h"
|
97
|
-
#include "src/core/lib/slice/slice_hash_table.h"
|
98
99
|
#include "src/core/lib/slice/slice_internal.h"
|
99
100
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
100
101
|
#include "src/core/lib/surface/call.h"
|
101
102
|
#include "src/core/lib/surface/channel.h"
|
102
|
-
#include "src/core/lib/surface/channel_init.h"
|
103
103
|
#include "src/core/lib/transport/static_metadata.h"
|
104
104
|
|
105
105
|
#define GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS 1
|
@@ -107,9 +107,7 @@
|
|
107
107
|
#define GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS 120
|
108
108
|
#define GRPC_GRPCLB_RECONNECT_JITTER 0.2
|
109
109
|
#define GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS 10000
|
110
|
-
|
111
|
-
#define GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN "grpc.grpclb_address_lb_token"
|
112
|
-
#define GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS "grpc.grpclb_address_client_stats"
|
110
|
+
#define GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS 10000
|
113
111
|
|
114
112
|
namespace grpc_core {
|
115
113
|
|
@@ -118,22 +116,29 @@ TraceFlag grpc_lb_glb_trace(false, "glb");
|
|
118
116
|
const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
|
119
117
|
const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
|
120
118
|
|
119
|
+
const char kGrpcLbAddressAttributeKey[] = "grpclb";
|
120
|
+
|
121
121
|
namespace {
|
122
122
|
|
123
123
|
constexpr char kGrpclb[] = "grpclb";
|
124
124
|
|
125
125
|
class GrpcLbConfig : public LoadBalancingPolicy::Config {
|
126
126
|
public:
|
127
|
-
|
128
|
-
|
127
|
+
GrpcLbConfig(RefCountedPtr<LoadBalancingPolicy::Config> child_policy,
|
128
|
+
std::string service_name)
|
129
|
+
: child_policy_(std::move(child_policy)),
|
130
|
+
service_name_(std::move(service_name)) {}
|
129
131
|
const char* name() const override { return kGrpclb; }
|
130
132
|
|
131
133
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
|
132
134
|
return child_policy_;
|
133
135
|
}
|
134
136
|
|
137
|
+
const std::string& service_name() const { return service_name_; }
|
138
|
+
|
135
139
|
private:
|
136
140
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_;
|
141
|
+
std::string service_name_;
|
137
142
|
};
|
138
143
|
|
139
144
|
class GrpcLb : public LoadBalancingPolicy {
|
@@ -151,7 +156,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
151
156
|
public:
|
152
157
|
explicit BalancerCallState(
|
153
158
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy);
|
154
|
-
~BalancerCallState();
|
159
|
+
~BalancerCallState() override;
|
155
160
|
|
156
161
|
// It's the caller's responsibility to ensure that Orphan() is called from
|
157
162
|
// inside the combiner.
|
@@ -172,17 +177,17 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
172
177
|
void ScheduleNextClientLoadReportLocked();
|
173
178
|
void SendClientLoadReportLocked();
|
174
179
|
|
175
|
-
static void MaybeSendClientLoadReport(void* arg,
|
176
|
-
static void ClientLoadReportDone(void* arg,
|
177
|
-
static void OnInitialRequestSent(void* arg,
|
178
|
-
static void OnBalancerMessageReceived(void* arg,
|
179
|
-
static void OnBalancerStatusReceived(void* arg,
|
180
|
+
static void MaybeSendClientLoadReport(void* arg, grpc_error_handle error);
|
181
|
+
static void ClientLoadReportDone(void* arg, grpc_error_handle error);
|
182
|
+
static void OnInitialRequestSent(void* arg, grpc_error_handle error);
|
183
|
+
static void OnBalancerMessageReceived(void* arg, grpc_error_handle error);
|
184
|
+
static void OnBalancerStatusReceived(void* arg, grpc_error_handle error);
|
180
185
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
+
void MaybeSendClientLoadReportLocked(grpc_error_handle error);
|
187
|
+
void ClientLoadReportDoneLocked(grpc_error_handle error);
|
188
|
+
void OnInitialRequestSentLocked();
|
189
|
+
void OnBalancerMessageReceivedLocked();
|
190
|
+
void OnBalancerStatusReceivedLocked(grpc_error_handle error);
|
186
191
|
|
187
192
|
// The owning LB policy.
|
188
193
|
RefCountedPtr<LoadBalancingPolicy> grpclb_policy_;
|
@@ -222,6 +227,67 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
222
227
|
grpc_closure client_load_report_closure_;
|
223
228
|
};
|
224
229
|
|
230
|
+
class SubchannelWrapper : public DelegatingSubchannel {
|
231
|
+
public:
|
232
|
+
SubchannelWrapper(RefCountedPtr<SubchannelInterface> subchannel,
|
233
|
+
RefCountedPtr<GrpcLb> lb_policy, std::string lb_token,
|
234
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
235
|
+
: DelegatingSubchannel(std::move(subchannel)),
|
236
|
+
lb_policy_(std::move(lb_policy)),
|
237
|
+
lb_token_(std::move(lb_token)),
|
238
|
+
client_stats_(std::move(client_stats)) {}
|
239
|
+
|
240
|
+
~SubchannelWrapper() override {
|
241
|
+
if (!lb_policy_->shutting_down_) {
|
242
|
+
lb_policy_->CacheDeletedSubchannelLocked(wrapped_subchannel());
|
243
|
+
}
|
244
|
+
}
|
245
|
+
|
246
|
+
const std::string& lb_token() const { return lb_token_; }
|
247
|
+
GrpcLbClientStats* client_stats() const { return client_stats_.get(); }
|
248
|
+
|
249
|
+
private:
|
250
|
+
RefCountedPtr<GrpcLb> lb_policy_;
|
251
|
+
std::string lb_token_;
|
252
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
253
|
+
};
|
254
|
+
|
255
|
+
class TokenAndClientStatsAttribute
|
256
|
+
: public ServerAddress::AttributeInterface {
|
257
|
+
public:
|
258
|
+
TokenAndClientStatsAttribute(std::string lb_token,
|
259
|
+
RefCountedPtr<GrpcLbClientStats> client_stats)
|
260
|
+
: lb_token_(std::move(lb_token)),
|
261
|
+
client_stats_(std::move(client_stats)) {}
|
262
|
+
|
263
|
+
std::unique_ptr<AttributeInterface> Copy() const override {
|
264
|
+
return absl::make_unique<TokenAndClientStatsAttribute>(lb_token_,
|
265
|
+
client_stats_);
|
266
|
+
}
|
267
|
+
|
268
|
+
int Cmp(const AttributeInterface* other_base) const override {
|
269
|
+
const TokenAndClientStatsAttribute* other =
|
270
|
+
static_cast<const TokenAndClientStatsAttribute*>(other_base);
|
271
|
+
int r = lb_token_.compare(other->lb_token_);
|
272
|
+
if (r != 0) return r;
|
273
|
+
return QsortCompare(client_stats_.get(), other->client_stats_.get());
|
274
|
+
}
|
275
|
+
|
276
|
+
std::string ToString() const override {
|
277
|
+
return absl::StrFormat("lb_token=\"%s\" client_stats=%p", lb_token_,
|
278
|
+
client_stats_.get());
|
279
|
+
}
|
280
|
+
|
281
|
+
const std::string& lb_token() const { return lb_token_; }
|
282
|
+
RefCountedPtr<GrpcLbClientStats> client_stats() const {
|
283
|
+
return client_stats_;
|
284
|
+
}
|
285
|
+
|
286
|
+
private:
|
287
|
+
std::string lb_token_;
|
288
|
+
RefCountedPtr<GrpcLbClientStats> client_stats_;
|
289
|
+
};
|
290
|
+
|
225
291
|
class Serverlist : public RefCounted<Serverlist> {
|
226
292
|
public:
|
227
293
|
// Takes ownership of serverlist.
|
@@ -233,7 +299,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
233
299
|
const std::vector<GrpcLbServer>& serverlist() const { return serverlist_; }
|
234
300
|
|
235
301
|
// Returns a text representation suitable for logging.
|
236
|
-
|
302
|
+
std::string AsText() const;
|
237
303
|
|
238
304
|
// Extracts all non-drop entries into a ServerAddressList.
|
239
305
|
ServerAddressList GetServerAddressList(
|
@@ -247,37 +313,32 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
247
313
|
// should not be dropped.
|
248
314
|
//
|
249
315
|
// Note: This is called from the picker, so it will be invoked in
|
250
|
-
// the channel's data plane
|
251
|
-
//
|
316
|
+
// the channel's data plane mutex, NOT the control plane
|
317
|
+
// work_serializer. It should not be accessed by any other part of the LB
|
252
318
|
// policy.
|
253
319
|
const char* ShouldDrop();
|
254
320
|
|
255
321
|
private:
|
256
322
|
std::vector<GrpcLbServer> serverlist_;
|
257
323
|
|
258
|
-
// Guarded by the channel's data plane
|
259
|
-
// plane
|
324
|
+
// Guarded by the channel's data plane mutex, NOT the control
|
325
|
+
// plane work_serializer. It should not be accessed by anything but the
|
260
326
|
// picker via the ShouldDrop() method.
|
261
327
|
size_t drop_index_ = 0;
|
262
328
|
};
|
263
329
|
|
264
330
|
class Picker : public SubchannelPicker {
|
265
331
|
public:
|
266
|
-
Picker(
|
332
|
+
Picker(RefCountedPtr<Serverlist> serverlist,
|
267
333
|
std::unique_ptr<SubchannelPicker> child_picker,
|
268
334
|
RefCountedPtr<GrpcLbClientStats> client_stats)
|
269
|
-
:
|
270
|
-
serverlist_(std::move(serverlist)),
|
335
|
+
: serverlist_(std::move(serverlist)),
|
271
336
|
child_picker_(std::move(child_picker)),
|
272
337
|
client_stats_(std::move(client_stats)) {}
|
273
338
|
|
274
339
|
PickResult Pick(PickArgs args) override;
|
275
340
|
|
276
341
|
private:
|
277
|
-
// Storing the address for logging, but not holding a ref.
|
278
|
-
// DO NOT DEFERENCE!
|
279
|
-
GrpcLb* parent_;
|
280
|
-
|
281
342
|
// Serverlist to be used for determining drops.
|
282
343
|
RefCountedPtr<Serverlist> serverlist_;
|
283
344
|
|
@@ -291,39 +352,72 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
291
352
|
: parent_(std::move(parent)) {}
|
292
353
|
|
293
354
|
RefCountedPtr<SubchannelInterface> CreateSubchannel(
|
294
|
-
const grpc_channel_args& args) override;
|
295
|
-
void UpdateState(grpc_connectivity_state state,
|
355
|
+
ServerAddress address, const grpc_channel_args& args) override;
|
356
|
+
void UpdateState(grpc_connectivity_state state, const absl::Status& status,
|
296
357
|
std::unique_ptr<SubchannelPicker> picker) override;
|
297
358
|
void RequestReresolution() override;
|
298
|
-
|
359
|
+
absl::string_view GetAuthority() override;
|
360
|
+
void AddTraceEvent(TraceSeverity severity,
|
361
|
+
absl::string_view message) override;
|
299
362
|
|
300
363
|
private:
|
301
364
|
RefCountedPtr<GrpcLb> parent_;
|
302
365
|
};
|
303
366
|
|
304
|
-
|
367
|
+
class StateWatcher : public AsyncConnectivityStateWatcherInterface {
|
368
|
+
public:
|
369
|
+
explicit StateWatcher(RefCountedPtr<GrpcLb> parent)
|
370
|
+
: AsyncConnectivityStateWatcherInterface(parent->work_serializer()),
|
371
|
+
parent_(std::move(parent)) {}
|
372
|
+
|
373
|
+
~StateWatcher() override { parent_.reset(DEBUG_LOCATION, "StateWatcher"); }
|
374
|
+
|
375
|
+
private:
|
376
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
377
|
+
const absl::Status& status) override {
|
378
|
+
if (parent_->fallback_at_startup_checks_pending_ &&
|
379
|
+
new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
380
|
+
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
381
|
+
// fallback mode immediately.
|
382
|
+
gpr_log(GPR_INFO,
|
383
|
+
"[grpclb %p] balancer channel in state:TRANSIENT_FAILURE (%s); "
|
384
|
+
"entering fallback mode",
|
385
|
+
parent_.get(), status.ToString().c_str());
|
386
|
+
parent_->fallback_at_startup_checks_pending_ = false;
|
387
|
+
grpc_timer_cancel(&parent_->lb_fallback_timer_);
|
388
|
+
parent_->fallback_mode_ = true;
|
389
|
+
parent_->CreateOrUpdateChildPolicyLocked();
|
390
|
+
// Cancel the watch, since we don't care about the channel state once we
|
391
|
+
// go into fallback mode.
|
392
|
+
parent_->CancelBalancerChannelConnectivityWatchLocked();
|
393
|
+
}
|
394
|
+
}
|
395
|
+
|
396
|
+
RefCountedPtr<GrpcLb> parent_;
|
397
|
+
};
|
398
|
+
|
399
|
+
~GrpcLb() override;
|
305
400
|
|
306
401
|
void ShutdownLocked() override;
|
307
402
|
|
308
403
|
// Helper functions used in UpdateLocked().
|
309
404
|
void ProcessAddressesAndChannelArgsLocked(const ServerAddressList& addresses,
|
310
405
|
const grpc_channel_args& args);
|
311
|
-
static
|
312
|
-
|
313
|
-
|
314
|
-
grpc_error* error);
|
406
|
+
static ServerAddressList AddNullLbTokenToAddresses(
|
407
|
+
const ServerAddressList& addresses);
|
408
|
+
|
315
409
|
void CancelBalancerChannelConnectivityWatchLocked();
|
316
410
|
|
317
411
|
// Methods for dealing with fallback state.
|
318
412
|
void MaybeEnterFallbackModeAfterStartup();
|
319
|
-
static void OnFallbackTimer(void* arg,
|
320
|
-
|
413
|
+
static void OnFallbackTimer(void* arg, grpc_error_handle error);
|
414
|
+
void OnFallbackTimerLocked(grpc_error_handle error);
|
321
415
|
|
322
416
|
// Methods for dealing with the balancer call.
|
323
417
|
void StartBalancerCallLocked();
|
324
418
|
void StartBalancerCallRetryTimerLocked();
|
325
|
-
static void OnBalancerCallRetryTimer(void* arg,
|
326
|
-
|
419
|
+
static void OnBalancerCallRetryTimer(void* arg, grpc_error_handle error);
|
420
|
+
void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
|
327
421
|
|
328
422
|
// Methods for dealing with the child policy.
|
329
423
|
grpc_channel_args* CreateChildPolicyArgsLocked(
|
@@ -332,8 +426,17 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
332
426
|
const grpc_channel_args* args);
|
333
427
|
void CreateOrUpdateChildPolicyLocked();
|
334
428
|
|
429
|
+
// Subchannel caching.
|
430
|
+
void CacheDeletedSubchannelLocked(
|
431
|
+
RefCountedPtr<SubchannelInterface> subchannel);
|
432
|
+
void StartSubchannelCacheTimerLocked();
|
433
|
+
static void OnSubchannelCacheTimer(void* arg, grpc_error_handle error);
|
434
|
+
void OnSubchannelCacheTimerLocked(grpc_error_handle error);
|
435
|
+
|
335
436
|
// Who the client is trying to communicate with.
|
336
|
-
|
437
|
+
std::string server_name_;
|
438
|
+
// Configurations for the policy.
|
439
|
+
RefCountedPtr<GrpcLbConfig> config_;
|
337
440
|
|
338
441
|
// Current channel args from the resolver.
|
339
442
|
grpc_channel_args* args_ = nullptr;
|
@@ -343,8 +446,11 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
343
446
|
|
344
447
|
// The channel for communicating with the LB server.
|
345
448
|
grpc_channel* lb_channel_ = nullptr;
|
449
|
+
StateWatcher* watcher_ = nullptr;
|
346
450
|
// Response generator to inject address updates into lb_channel_.
|
347
451
|
RefCountedPtr<FakeResolverResponseGenerator> response_generator_;
|
452
|
+
// Parent channelz node.
|
453
|
+
RefCountedPtr<channelz::ChannelNode> parent_channelz_node_;
|
348
454
|
|
349
455
|
// The data associated with the current LB call. It holds a ref to this LB
|
350
456
|
// policy. It's initialized every time we query for backends. It's reset to
|
@@ -353,7 +459,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
353
459
|
// contains a non-NULL lb_call_.
|
354
460
|
OrphanablePtr<BalancerCallState> lb_calld_;
|
355
461
|
// Timeout in milliseconds for the LB call. 0 means no deadline.
|
356
|
-
int lb_call_timeout_ms_ = 0;
|
462
|
+
const int lb_call_timeout_ms_ = 0;
|
357
463
|
// Balancer call retry state.
|
358
464
|
BackOff lb_call_backoff_;
|
359
465
|
bool retry_timer_callback_pending_ = false;
|
@@ -371,19 +477,24 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
371
477
|
// State for fallback-at-startup checks.
|
372
478
|
// Timeout after startup after which we will go into fallback mode if
|
373
479
|
// we have not received a serverlist from the balancer.
|
374
|
-
int fallback_at_startup_timeout_ = 0;
|
480
|
+
const int fallback_at_startup_timeout_ = 0;
|
375
481
|
bool fallback_at_startup_checks_pending_ = false;
|
376
482
|
grpc_timer lb_fallback_timer_;
|
377
483
|
grpc_closure lb_on_fallback_;
|
378
|
-
grpc_connectivity_state lb_channel_connectivity_ = GRPC_CHANNEL_IDLE;
|
379
|
-
grpc_closure lb_channel_on_connectivity_changed_;
|
380
484
|
|
381
485
|
// The child policy to use for the backends.
|
382
486
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
383
|
-
// The child policy config.
|
384
|
-
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config_;
|
385
487
|
// Child policy in state READY.
|
386
488
|
bool child_policy_ready_ = false;
|
489
|
+
|
490
|
+
// Deleted subchannel caching.
|
491
|
+
const grpc_millis subchannel_cache_interval_ms_;
|
492
|
+
std::map<grpc_millis /*deletion time*/,
|
493
|
+
std::vector<RefCountedPtr<SubchannelInterface>>>
|
494
|
+
cached_subchannels_;
|
495
|
+
grpc_timer subchannel_cache_timer_;
|
496
|
+
grpc_closure on_subchannel_cache_timer_;
|
497
|
+
bool subchannel_cache_timer_pending_ = false;
|
387
498
|
};
|
388
499
|
|
389
500
|
//
|
@@ -397,7 +508,7 @@ bool GrpcLb::Serverlist::operator==(const Serverlist& other) const {
|
|
397
508
|
void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
398
509
|
memset(addr, 0, sizeof(*addr));
|
399
510
|
if (server.drop) return;
|
400
|
-
const uint16_t netorder_port = grpc_htons((
|
511
|
+
const uint16_t netorder_port = grpc_htons(static_cast<uint16_t>(server.port));
|
401
512
|
/* the addresses are given in binary format (a in(6)_addr struct) in
|
402
513
|
* server->ip_address.bytes. */
|
403
514
|
if (server.ip_size == 4) {
|
@@ -408,91 +519,49 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
|
408
519
|
addr4->sin_port = netorder_port;
|
409
520
|
} else if (server.ip_size == 16) {
|
410
521
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
|
411
|
-
grpc_sockaddr_in6* addr6 =
|
522
|
+
grpc_sockaddr_in6* addr6 =
|
523
|
+
reinterpret_cast<grpc_sockaddr_in6*>(&addr->addr);
|
412
524
|
addr6->sin6_family = GRPC_AF_INET6;
|
413
525
|
memcpy(&addr6->sin6_addr, server.ip_addr, server.ip_size);
|
414
526
|
addr6->sin6_port = netorder_port;
|
415
527
|
}
|
416
528
|
}
|
417
529
|
|
418
|
-
|
419
|
-
|
420
|
-
gpr_strvec_init(&entries);
|
530
|
+
std::string GrpcLb::Serverlist::AsText() const {
|
531
|
+
std::vector<std::string> entries;
|
421
532
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
422
533
|
const GrpcLbServer& server = serverlist_[i];
|
423
|
-
|
534
|
+
std::string ipport;
|
424
535
|
if (server.drop) {
|
425
|
-
ipport =
|
536
|
+
ipport = "(drop)";
|
426
537
|
} else {
|
427
538
|
grpc_resolved_address addr;
|
428
539
|
ParseServer(server, &addr);
|
429
|
-
grpc_sockaddr_to_string(&
|
540
|
+
ipport = grpc_sockaddr_to_string(&addr, false);
|
430
541
|
}
|
431
|
-
|
432
|
-
|
433
|
-
server.load_balance_token);
|
434
|
-
gpr_free(ipport);
|
435
|
-
gpr_strvec_add(&entries, entry);
|
542
|
+
entries.push_back(absl::StrFormat(" %" PRIuPTR ": %s token=%s\n", i,
|
543
|
+
ipport, server.load_balance_token));
|
436
544
|
}
|
437
|
-
|
438
|
-
gpr_strvec_destroy(&entries);
|
439
|
-
return result;
|
440
|
-
}
|
441
|
-
|
442
|
-
// vtables for channel args for LB token and client stats.
|
443
|
-
void* lb_token_copy(void* token) {
|
444
|
-
return gpr_strdup(static_cast<char*>(token));
|
445
|
-
}
|
446
|
-
void lb_token_destroy(void* token) { gpr_free(token); }
|
447
|
-
void* client_stats_copy(void* p) {
|
448
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
449
|
-
client_stats->Ref().release();
|
450
|
-
return p;
|
451
|
-
}
|
452
|
-
void client_stats_destroy(void* p) {
|
453
|
-
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
|
454
|
-
client_stats->Unref();
|
455
|
-
}
|
456
|
-
int equal_cmp(void* /*p1*/, void* /*p2*/) {
|
457
|
-
// Always indicate a match, since we don't want this channel arg to
|
458
|
-
// affect the subchannel's key in the index.
|
459
|
-
// TODO(roth): Is this right? This does prevent us from needlessly
|
460
|
-
// recreating the subchannel whenever the LB token or client stats
|
461
|
-
// changes (i.e., when the balancer call is terminated and reestablished).
|
462
|
-
// However, it means that we don't actually recreate the subchannel,
|
463
|
-
// which means that we won't ever switch over to using the new LB
|
464
|
-
// token or client stats. A better approach might be to find somewhere
|
465
|
-
// other than the subchannel args to store the LB token and client
|
466
|
-
// stats. They could be stored in a map and then looked up for each
|
467
|
-
// call. Or we could do something more complicated whereby
|
468
|
-
// we create our own subchannel wrapper to store them, although that would
|
469
|
-
// involve a lot of refcounting overhead.
|
470
|
-
// Given that we're trying to move from grpclb to xds at this point,
|
471
|
-
// and that no one has actually reported any problems with this, we
|
472
|
-
// probably won't bother fixing this at this point.
|
473
|
-
return 0;
|
545
|
+
return absl::StrJoin(entries, "");
|
474
546
|
}
|
475
|
-
const grpc_arg_pointer_vtable lb_token_arg_vtable = {
|
476
|
-
lb_token_copy, lb_token_destroy, equal_cmp};
|
477
|
-
const grpc_arg_pointer_vtable client_stats_arg_vtable = {
|
478
|
-
client_stats_copy, client_stats_destroy, equal_cmp};
|
479
547
|
|
480
548
|
bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
481
549
|
if (server.drop) return false;
|
482
550
|
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
483
551
|
if (log) {
|
484
552
|
gpr_log(GPR_ERROR,
|
485
|
-
"Invalid port '%d' at index %
|
486
|
-
|
553
|
+
"Invalid port '%d' at index %" PRIuPTR
|
554
|
+
" of serverlist. Ignoring.",
|
555
|
+
server.port, idx);
|
487
556
|
}
|
488
557
|
return false;
|
489
558
|
}
|
490
559
|
if (GPR_UNLIKELY(server.ip_size != 4 && server.ip_size != 16)) {
|
491
560
|
if (log) {
|
492
561
|
gpr_log(GPR_ERROR,
|
493
|
-
"Expected IP to be 4 or 16 bytes, got %d at index %
|
494
|
-
"serverlist. Ignoring",
|
495
|
-
server.ip_size,
|
562
|
+
"Expected IP to be 4 or 16 bytes, got %d at index %" PRIuPTR
|
563
|
+
" of serverlist. Ignoring",
|
564
|
+
server.ip_size, idx);
|
496
565
|
}
|
497
566
|
return false;
|
498
567
|
}
|
@@ -502,6 +571,8 @@ bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
|
502
571
|
// Returns addresses extracted from the serverlist.
|
503
572
|
ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
504
573
|
GrpcLbClientStats* client_stats) const {
|
574
|
+
RefCountedPtr<GrpcLbClientStats> stats;
|
575
|
+
if (client_stats != nullptr) stats = client_stats->Ref();
|
505
576
|
ServerAddressList addresses;
|
506
577
|
for (size_t i = 0; i < serverlist_.size(); ++i) {
|
507
578
|
const GrpcLbServer& server = serverlist_[i];
|
@@ -510,36 +581,23 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
|
|
510
581
|
grpc_resolved_address addr;
|
511
582
|
ParseServer(server, &addr);
|
512
583
|
// LB token processing.
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
const size_t lb_token_length =
|
518
|
-
strnlen(server.load_balance_token, lb_token_max_length);
|
519
|
-
memcpy(lb_token, server.load_balance_token, lb_token_length);
|
520
|
-
lb_token[lb_token_length] = '\0';
|
521
|
-
} else {
|
522
|
-
char* uri = grpc_sockaddr_to_uri(&addr);
|
584
|
+
const size_t lb_token_length = strnlen(
|
585
|
+
server.load_balance_token, GPR_ARRAY_SIZE(server.load_balance_token));
|
586
|
+
std::string lb_token(server.load_balance_token, lb_token_length);
|
587
|
+
if (lb_token.empty()) {
|
523
588
|
gpr_log(GPR_INFO,
|
524
589
|
"Missing LB token for backend address '%s'. The empty token will "
|
525
590
|
"be used instead",
|
526
|
-
|
527
|
-
gpr_free(uri);
|
528
|
-
lb_token[0] = '\0';
|
591
|
+
grpc_sockaddr_to_uri(&addr).c_str());
|
529
592
|
}
|
593
|
+
// Attach attribute to address containing LB token and stats object.
|
594
|
+
std::map<const char*, std::unique_ptr<ServerAddress::AttributeInterface>>
|
595
|
+
attributes;
|
596
|
+
attributes[kGrpcLbAddressAttributeKey] =
|
597
|
+
absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
|
598
|
+
stats);
|
530
599
|
// Add address.
|
531
|
-
|
532
|
-
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
533
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
|
534
|
-
&lb_token_arg_vtable));
|
535
|
-
if (client_stats != nullptr) {
|
536
|
-
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
|
537
|
-
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS), client_stats,
|
538
|
-
&client_stats_arg_vtable));
|
539
|
-
}
|
540
|
-
grpc_channel_args* args = grpc_channel_args_copy_and_add(
|
541
|
-
nullptr, args_to_add.data(), args_to_add.size());
|
542
|
-
addresses.emplace_back(addr, args);
|
600
|
+
addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
|
543
601
|
}
|
544
602
|
return addresses;
|
545
603
|
}
|
@@ -564,9 +622,9 @@ const char* GrpcLb::Serverlist::ShouldDrop() {
|
|
564
622
|
//
|
565
623
|
|
566
624
|
GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
567
|
-
PickResult result;
|
568
625
|
// Check if we should drop the call.
|
569
|
-
const char* drop_token =
|
626
|
+
const char* drop_token =
|
627
|
+
serverlist_ == nullptr ? nullptr : serverlist_->ShouldDrop();
|
570
628
|
if (drop_token != nullptr) {
|
571
629
|
// Update client load reporting stats to indicate the number of
|
572
630
|
// dropped calls. Note that we have to do this here instead of in
|
@@ -576,43 +634,42 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
576
634
|
if (client_stats_ != nullptr) {
|
577
635
|
client_stats_->AddCallDropped(drop_token);
|
578
636
|
}
|
579
|
-
|
580
|
-
|
637
|
+
return PickResult::Drop(
|
638
|
+
absl::UnavailableError("drop directed by grpclb balancer"));
|
581
639
|
}
|
582
640
|
// Forward pick to child policy.
|
583
|
-
result = child_picker_->Pick(args);
|
641
|
+
PickResult result = child_picker_->Pick(args);
|
584
642
|
// If pick succeeded, add LB token to initial metadata.
|
585
|
-
|
586
|
-
|
643
|
+
auto* complete_pick = absl::get_if<PickResult::Complete>(&result.result);
|
644
|
+
if (complete_pick != nullptr) {
|
645
|
+
const SubchannelWrapper* subchannel_wrapper =
|
646
|
+
static_cast<SubchannelWrapper*>(complete_pick->subchannel.get());
|
587
647
|
// Encode client stats object into metadata for use by
|
588
648
|
// client_load_reporting filter.
|
589
|
-
|
590
|
-
|
591
|
-
GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS);
|
592
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
593
|
-
arg->value.pointer.p != nullptr) {
|
594
|
-
GrpcLbClientStats* client_stats =
|
595
|
-
static_cast<GrpcLbClientStats*>(arg->value.pointer.p);
|
649
|
+
GrpcLbClientStats* client_stats = subchannel_wrapper->client_stats();
|
650
|
+
if (client_stats != nullptr) {
|
596
651
|
client_stats->Ref().release(); // Ref passed via metadata.
|
597
652
|
// The metadata value is a hack: we pretend the pointer points to
|
598
653
|
// a string and rely on the client_load_reporting filter to know
|
599
654
|
// how to interpret it.
|
600
655
|
args.initial_metadata->Add(
|
601
656
|
kGrpcLbClientStatsMetadataKey,
|
602
|
-
|
657
|
+
absl::string_view(reinterpret_cast<const char*>(client_stats), 0));
|
603
658
|
// Update calls-started.
|
604
659
|
client_stats->AddCallStarted();
|
605
660
|
}
|
606
661
|
// Encode the LB token in metadata.
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
662
|
+
// Create a new copy on the call arena, since the subchannel list
|
663
|
+
// may get refreshed between when we return this pick and when the
|
664
|
+
// initial metadata goes out on the wire.
|
665
|
+
if (!subchannel_wrapper->lb_token().empty()) {
|
666
|
+
char* lb_token = static_cast<char*>(
|
667
|
+
args.call_state->Alloc(subchannel_wrapper->lb_token().size() + 1));
|
668
|
+
strcpy(lb_token, subchannel_wrapper->lb_token().c_str());
|
669
|
+
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey, lb_token);
|
613
670
|
}
|
614
|
-
|
615
|
-
|
671
|
+
// Unwrap subchannel to pass up to the channel.
|
672
|
+
complete_pick->subchannel = subchannel_wrapper->wrapped_subchannel();
|
616
673
|
}
|
617
674
|
return result;
|
618
675
|
}
|
@@ -622,62 +679,65 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
|
|
622
679
|
//
|
623
680
|
|
624
681
|
RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
|
625
|
-
const grpc_channel_args& args) {
|
682
|
+
ServerAddress address, const grpc_channel_args& args) {
|
626
683
|
if (parent_->shutting_down_) return nullptr;
|
627
|
-
|
684
|
+
const TokenAndClientStatsAttribute* attribute =
|
685
|
+
static_cast<const TokenAndClientStatsAttribute*>(
|
686
|
+
address.GetAttribute(kGrpcLbAddressAttributeKey));
|
687
|
+
if (attribute == nullptr) {
|
688
|
+
gpr_log(GPR_ERROR,
|
689
|
+
"[grpclb %p] no TokenAndClientStatsAttribute for address %p",
|
690
|
+
parent_.get(), address.ToString().c_str());
|
691
|
+
abort();
|
692
|
+
}
|
693
|
+
std::string lb_token = attribute->lb_token();
|
694
|
+
RefCountedPtr<GrpcLbClientStats> client_stats = attribute->client_stats();
|
695
|
+
return MakeRefCounted<SubchannelWrapper>(
|
696
|
+
parent_->channel_control_helper()->CreateSubchannel(std::move(address),
|
697
|
+
args),
|
698
|
+
parent_->Ref(DEBUG_LOCATION, "SubchannelWrapper"), std::move(lb_token),
|
699
|
+
std::move(client_stats));
|
628
700
|
}
|
629
701
|
|
630
702
|
void GrpcLb::Helper::UpdateState(grpc_connectivity_state state,
|
703
|
+
const absl::Status& status,
|
631
704
|
std::unique_ptr<SubchannelPicker> picker) {
|
632
705
|
if (parent_->shutting_down_) return;
|
633
706
|
// Record whether child policy reports READY.
|
634
707
|
parent_->child_policy_ready_ = state == GRPC_CHANNEL_READY;
|
635
708
|
// Enter fallback mode if needed.
|
636
709
|
parent_->MaybeEnterFallbackModeAfterStartup();
|
637
|
-
//
|
638
|
-
//
|
639
|
-
//
|
640
|
-
//
|
641
|
-
//
|
642
|
-
//
|
643
|
-
//
|
644
|
-
//
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
// to process drops for picks that yield a QUEUE result; this would
|
651
|
-
// result in dropping too many calls, since we will see the
|
652
|
-
// queued picks multiple times, and we'd consider each one a
|
653
|
-
// separate call for the drop calculation.
|
654
|
-
//
|
655
|
-
// Cases 1 and 3b: return picker from the child policy as-is.
|
656
|
-
if (parent_->serverlist_ == nullptr ||
|
657
|
-
(!parent_->serverlist_->ContainsAllDropEntries() &&
|
658
|
-
state != GRPC_CHANNEL_READY)) {
|
659
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
660
|
-
gpr_log(GPR_INFO,
|
661
|
-
"[grpclb %p helper %p] state=%s passing child picker %p as-is",
|
662
|
-
parent_.get(), this, ConnectivityStateName(state), picker.get());
|
663
|
-
}
|
664
|
-
parent_->channel_control_helper()->UpdateState(state, std::move(picker));
|
665
|
-
return;
|
666
|
-
}
|
667
|
-
// Cases 2 and 3a: wrap picker from the child in our own picker.
|
668
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
669
|
-
gpr_log(GPR_INFO, "[grpclb %p helper %p] state=%s wrapping child picker %p",
|
670
|
-
parent_.get(), this, ConnectivityStateName(state), picker.get());
|
710
|
+
// We pass the serverlist to the picker so that it can handle drops.
|
711
|
+
// However, we don't want to handle drops in the case where the child
|
712
|
+
// policy is reporting a state other than READY (unless we are
|
713
|
+
// dropping *all* calls), because we don't want to process drops for picks
|
714
|
+
// that yield a QUEUE result; this would result in dropping too many calls,
|
715
|
+
// since we will see the queued picks multiple times, and we'd consider each
|
716
|
+
// one a separate call for the drop calculation. So in this case, we pass
|
717
|
+
// a null serverlist to the picker, which tells it not to do drops.
|
718
|
+
RefCountedPtr<Serverlist> serverlist;
|
719
|
+
if (state == GRPC_CHANNEL_READY ||
|
720
|
+
(parent_->serverlist_ != nullptr &&
|
721
|
+
parent_->serverlist_->ContainsAllDropEntries())) {
|
722
|
+
serverlist = parent_->serverlist_;
|
671
723
|
}
|
672
724
|
RefCountedPtr<GrpcLbClientStats> client_stats;
|
673
725
|
if (parent_->lb_calld_ != nullptr &&
|
674
726
|
parent_->lb_calld_->client_stats() != nullptr) {
|
675
727
|
client_stats = parent_->lb_calld_->client_stats()->Ref();
|
676
728
|
}
|
729
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
730
|
+
gpr_log(GPR_INFO,
|
731
|
+
"[grpclb %p helper %p] state=%s (%s) wrapping child "
|
732
|
+
"picker %p (serverlist=%p, client_stats=%p)",
|
733
|
+
parent_.get(), this, ConnectivityStateName(state),
|
734
|
+
status.ToString().c_str(), picker.get(), serverlist.get(),
|
735
|
+
client_stats.get());
|
736
|
+
}
|
677
737
|
parent_->channel_control_helper()->UpdateState(
|
678
|
-
state,
|
679
|
-
absl::make_unique<Picker>(
|
680
|
-
std::move(
|
738
|
+
state, status,
|
739
|
+
absl::make_unique<Picker>(std::move(serverlist), std::move(picker),
|
740
|
+
std::move(client_stats)));
|
681
741
|
}
|
682
742
|
|
683
743
|
void GrpcLb::Helper::RequestReresolution() {
|
@@ -692,7 +752,12 @@ void GrpcLb::Helper::RequestReresolution() {
|
|
692
752
|
}
|
693
753
|
}
|
694
754
|
|
695
|
-
|
755
|
+
absl::string_view GrpcLb::Helper::GetAuthority() {
|
756
|
+
return parent_->channel_control_helper()->GetAuthority();
|
757
|
+
}
|
758
|
+
|
759
|
+
void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity,
|
760
|
+
absl::string_view message) {
|
696
761
|
if (parent_->shutting_down_) return;
|
697
762
|
parent_->channel_control_helper()->AddTraceEvent(severity, message);
|
698
763
|
}
|
@@ -703,15 +768,25 @@ void GrpcLb::Helper::AddTraceEvent(TraceSeverity severity, StringView message) {
|
|
703
768
|
|
704
769
|
GrpcLb::BalancerCallState::BalancerCallState(
|
705
770
|
RefCountedPtr<LoadBalancingPolicy> parent_grpclb_policy)
|
706
|
-
: InternallyRefCounted<BalancerCallState>(
|
771
|
+
: InternallyRefCounted<BalancerCallState>(
|
772
|
+
GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace) ? "BalancerCallState"
|
773
|
+
: nullptr),
|
707
774
|
grpclb_policy_(std::move(parent_grpclb_policy)) {
|
708
775
|
GPR_ASSERT(grpclb_policy_ != nullptr);
|
709
776
|
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
710
777
|
// Init the LB call. Note that the LB call will progress every time there's
|
711
778
|
// activity in grpclb_policy_->interested_parties(), which is comprised of
|
712
779
|
// the polling entities from client_channel.
|
713
|
-
GPR_ASSERT(grpclb_policy()->server_name_
|
714
|
-
|
780
|
+
GPR_ASSERT(!grpclb_policy()->server_name_.empty());
|
781
|
+
// Closure Initialization
|
782
|
+
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
783
|
+
grpc_schedule_on_exec_ctx);
|
784
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
785
|
+
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
786
|
+
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
787
|
+
this, grpc_schedule_on_exec_ctx);
|
788
|
+
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
789
|
+
this, grpc_schedule_on_exec_ctx);
|
715
790
|
const grpc_millis deadline =
|
716
791
|
grpclb_policy()->lb_call_timeout_ms_ == 0
|
717
792
|
? GRPC_MILLIS_INF_FUTURE
|
@@ -723,8 +798,11 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
723
798
|
nullptr, deadline, nullptr);
|
724
799
|
// Init the LB call request payload.
|
725
800
|
upb::Arena arena;
|
726
|
-
grpc_slice request_payload_slice =
|
727
|
-
|
801
|
+
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
802
|
+
grpclb_policy()->config_->service_name().empty()
|
803
|
+
? grpclb_policy()->server_name_.c_str()
|
804
|
+
: grpclb_policy()->config_->service_name().c_str(),
|
805
|
+
arena.ptr());
|
728
806
|
send_message_payload_ =
|
729
807
|
grpc_raw_byte_buffer_create(&request_payload_slice, 1);
|
730
808
|
grpc_slice_unref_internal(request_payload_slice);
|
@@ -749,7 +827,7 @@ void GrpcLb::BalancerCallState::Orphan() {
|
|
749
827
|
// lb_on_balancer_status_received_ will complete the cancellation and clean
|
750
828
|
// up. Otherwise, we are here because grpclb_policy has to orphan a failed
|
751
829
|
// call, then the following cancellation will be a no-op.
|
752
|
-
|
830
|
+
grpc_call_cancel_internal(lb_call_);
|
753
831
|
if (client_load_report_timer_callback_pending_) {
|
754
832
|
grpc_timer_cancel(&client_load_report_timer_);
|
755
833
|
}
|
@@ -788,10 +866,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
788
866
|
// with the callback.
|
789
867
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
790
868
|
self.release();
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
lb_call_, ops, (size_t)(op - ops), &lb_on_initial_request_sent_);
|
869
|
+
call_error = grpc_call_start_batch_and_execute(lb_call_, ops,
|
870
|
+
static_cast<size_t>(op - ops),
|
871
|
+
&lb_on_initial_request_sent_);
|
795
872
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
796
873
|
// Op: recv initial metadata.
|
797
874
|
op = ops;
|
@@ -812,10 +889,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
812
889
|
// with the callback.
|
813
890
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
814
891
|
self.release();
|
815
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_message_received_,
|
816
|
-
OnBalancerMessageReceived, this, grpc_schedule_on_exec_ctx);
|
817
892
|
call_error = grpc_call_start_batch_and_execute(
|
818
|
-
lb_call_, ops,
|
893
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
894
|
+
&lb_on_balancer_message_received_);
|
819
895
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
820
896
|
// Op: recv server status.
|
821
897
|
op = ops;
|
@@ -830,14 +906,17 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
830
906
|
// This callback signals the end of the LB call, so it relies on the initial
|
831
907
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
832
908
|
// unreffed.
|
833
|
-
GRPC_CLOSURE_INIT(&lb_on_balancer_status_received_, OnBalancerStatusReceived,
|
834
|
-
this, grpc_schedule_on_exec_ctx);
|
835
909
|
call_error = grpc_call_start_batch_and_execute(
|
836
|
-
lb_call_, ops,
|
910
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
911
|
+
&lb_on_balancer_status_received_);
|
837
912
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
838
913
|
}
|
839
914
|
|
840
915
|
void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
916
|
+
// InvalidateNow to avoid getting stuck re-initializing this timer
|
917
|
+
// in a loop while draining the currently-held WorkSerializer.
|
918
|
+
// Also see https://github.com/grpc/grpc/issues/26079.
|
919
|
+
ExecCtx::Get()->InvalidateNow();
|
841
920
|
const grpc_millis next_client_load_report_time =
|
842
921
|
ExecCtx::Get()->Now() + client_stats_report_interval_;
|
843
922
|
GRPC_CLOSURE_INIT(&client_load_report_closure_, MaybeSendClientLoadReport,
|
@@ -847,31 +926,30 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
|
|
847
926
|
client_load_report_timer_callback_pending_ = true;
|
848
927
|
}
|
849
928
|
|
850
|
-
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(
|
851
|
-
|
929
|
+
void GrpcLb::BalancerCallState::MaybeSendClientLoadReport(
|
930
|
+
void* arg, grpc_error_handle error) {
|
852
931
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
932
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
933
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
934
|
+
[lb_calld, error]() { lb_calld->MaybeSendClientLoadReportLocked(error); },
|
935
|
+
DEBUG_LOCATION);
|
857
936
|
}
|
858
937
|
|
859
938
|
void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked(
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
|
939
|
+
grpc_error_handle error) {
|
940
|
+
client_load_report_timer_callback_pending_ = false;
|
941
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
942
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
943
|
+
GRPC_ERROR_UNREF(error);
|
866
944
|
return;
|
867
945
|
}
|
868
946
|
// If we've already sent the initial request, then we can go ahead and send
|
869
947
|
// the load report. Otherwise, we need to wait until the initial request has
|
870
948
|
// been sent to send this (see OnInitialRequestSentLocked()).
|
871
|
-
if (
|
872
|
-
|
949
|
+
if (send_message_payload_ == nullptr) {
|
950
|
+
SendClientLoadReportLocked();
|
873
951
|
} else {
|
874
|
-
|
952
|
+
client_load_report_is_due_ = true;
|
875
953
|
}
|
876
954
|
}
|
877
955
|
|
@@ -892,7 +970,7 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
892
970
|
if (num_calls_started == 0 && num_calls_finished == 0 &&
|
893
971
|
num_calls_finished_with_client_failed_to_send == 0 &&
|
894
972
|
num_calls_finished_known_received == 0 &&
|
895
|
-
(drop_token_counts == nullptr || drop_token_counts->
|
973
|
+
(drop_token_counts == nullptr || drop_token_counts->empty())) {
|
896
974
|
if (last_client_load_report_counters_were_zero_) {
|
897
975
|
ScheduleNextClientLoadReportLocked();
|
898
976
|
return;
|
@@ -928,142 +1006,128 @@ void GrpcLb::BalancerCallState::SendClientLoadReportLocked() {
|
|
928
1006
|
}
|
929
1007
|
|
930
1008
|
void GrpcLb::BalancerCallState::ClientLoadReportDone(void* arg,
|
931
|
-
|
1009
|
+
grpc_error_handle error) {
|
932
1010
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
1011
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
1012
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1013
|
+
[lb_calld, error]() { lb_calld->ClientLoadReportDoneLocked(error); },
|
1014
|
+
DEBUG_LOCATION);
|
937
1015
|
}
|
938
1016
|
|
939
|
-
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
lb_calld->Unref(DEBUG_LOCATION, "client_load_report");
|
1017
|
+
void GrpcLb::BalancerCallState::ClientLoadReportDoneLocked(
|
1018
|
+
grpc_error_handle error) {
|
1019
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
1020
|
+
send_message_payload_ = nullptr;
|
1021
|
+
if (error != GRPC_ERROR_NONE || this != grpclb_policy()->lb_calld_.get()) {
|
1022
|
+
Unref(DEBUG_LOCATION, "client_load_report");
|
1023
|
+
GRPC_ERROR_UNREF(error);
|
947
1024
|
return;
|
948
1025
|
}
|
949
|
-
|
1026
|
+
ScheduleNextClientLoadReportLocked();
|
950
1027
|
}
|
951
1028
|
|
952
|
-
void GrpcLb::BalancerCallState::OnInitialRequestSent(
|
953
|
-
|
1029
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSent(
|
1030
|
+
void* arg, grpc_error_handle /*error*/) {
|
954
1031
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
955
|
-
lb_calld->grpclb_policy()->
|
956
|
-
|
957
|
-
OnInitialRequestSentLocked, lb_calld, nullptr),
|
958
|
-
GRPC_ERROR_REF(error));
|
1032
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1033
|
+
[lb_calld]() { lb_calld->OnInitialRequestSentLocked(); }, DEBUG_LOCATION);
|
959
1034
|
}
|
960
1035
|
|
961
|
-
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked(
|
962
|
-
|
963
|
-
|
964
|
-
grpc_byte_buffer_destroy(lb_calld->send_message_payload_);
|
965
|
-
lb_calld->send_message_payload_ = nullptr;
|
1036
|
+
void GrpcLb::BalancerCallState::OnInitialRequestSentLocked() {
|
1037
|
+
grpc_byte_buffer_destroy(send_message_payload_);
|
1038
|
+
send_message_payload_ = nullptr;
|
966
1039
|
// If we attempted to send a client load report before the initial request was
|
967
1040
|
// sent (and this lb_calld is still in use), send the load report now.
|
968
|
-
if (
|
969
|
-
|
970
|
-
|
971
|
-
lb_calld->client_load_report_is_due_ = false;
|
1041
|
+
if (client_load_report_is_due_ && this == grpclb_policy()->lb_calld_.get()) {
|
1042
|
+
SendClientLoadReportLocked();
|
1043
|
+
client_load_report_is_due_ = false;
|
972
1044
|
}
|
973
|
-
|
1045
|
+
Unref(DEBUG_LOCATION, "on_initial_request_sent");
|
974
1046
|
}
|
975
1047
|
|
976
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
977
|
-
|
1048
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceived(
|
1049
|
+
void* arg, grpc_error_handle /*error*/) {
|
978
1050
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
979
|
-
lb_calld->grpclb_policy()->
|
980
|
-
|
981
|
-
|
982
|
-
GRPC_ERROR_REF(error));
|
1051
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1052
|
+
[lb_calld]() { lb_calld->OnBalancerMessageReceivedLocked(); },
|
1053
|
+
DEBUG_LOCATION);
|
983
1054
|
}
|
984
1055
|
|
985
|
-
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
986
|
-
void* arg, grpc_error* /*error*/) {
|
987
|
-
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
988
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1056
|
+
void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked() {
|
989
1057
|
// Null payload means the LB call was cancelled.
|
990
|
-
if (
|
991
|
-
|
992
|
-
|
1058
|
+
if (this != grpclb_policy()->lb_calld_.get() ||
|
1059
|
+
recv_message_payload_ == nullptr) {
|
1060
|
+
Unref(DEBUG_LOCATION, "on_message_received");
|
993
1061
|
return;
|
994
1062
|
}
|
995
1063
|
grpc_byte_buffer_reader bbr;
|
996
|
-
grpc_byte_buffer_reader_init(&bbr,
|
1064
|
+
grpc_byte_buffer_reader_init(&bbr, recv_message_payload_);
|
997
1065
|
grpc_slice response_slice = grpc_byte_buffer_reader_readall(&bbr);
|
998
1066
|
grpc_byte_buffer_reader_destroy(&bbr);
|
999
|
-
grpc_byte_buffer_destroy(
|
1000
|
-
|
1067
|
+
grpc_byte_buffer_destroy(recv_message_payload_);
|
1068
|
+
recv_message_payload_ = nullptr;
|
1001
1069
|
GrpcLbResponse response;
|
1002
1070
|
upb::Arena arena;
|
1003
1071
|
if (!GrpcLbResponseParse(response_slice, arena.ptr(), &response) ||
|
1004
|
-
(response.type == response.INITIAL &&
|
1072
|
+
(response.type == response.INITIAL && seen_initial_response_)) {
|
1005
1073
|
char* response_slice_str =
|
1006
1074
|
grpc_dump_slice(response_slice, GPR_DUMP_ASCII | GPR_DUMP_HEX);
|
1007
1075
|
gpr_log(GPR_ERROR,
|
1008
1076
|
"[grpclb %p] lb_calld=%p: Invalid LB response received: '%s'. "
|
1009
1077
|
"Ignoring.",
|
1010
|
-
grpclb_policy,
|
1078
|
+
grpclb_policy(), this, response_slice_str);
|
1011
1079
|
gpr_free(response_slice_str);
|
1012
1080
|
} else {
|
1013
1081
|
switch (response.type) {
|
1014
1082
|
case response.INITIAL: {
|
1015
1083
|
if (response.client_stats_report_interval != 0) {
|
1016
|
-
|
1017
|
-
|
1084
|
+
client_stats_report_interval_ = std::max(
|
1085
|
+
int64_t(GPR_MS_PER_SEC), response.client_stats_report_interval);
|
1018
1086
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1019
1087
|
gpr_log(GPR_INFO,
|
1020
1088
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1021
1089
|
"message; client load reporting interval = %" PRId64
|
1022
1090
|
" milliseconds",
|
1023
|
-
grpclb_policy,
|
1024
|
-
lb_calld->client_stats_report_interval_);
|
1091
|
+
grpclb_policy(), this, client_stats_report_interval_);
|
1025
1092
|
}
|
1026
1093
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1027
1094
|
gpr_log(GPR_INFO,
|
1028
1095
|
"[grpclb %p] lb_calld=%p: Received initial LB response "
|
1029
1096
|
"message; client load reporting NOT enabled",
|
1030
|
-
grpclb_policy,
|
1097
|
+
grpclb_policy(), this);
|
1031
1098
|
}
|
1032
|
-
|
1099
|
+
seen_initial_response_ = true;
|
1033
1100
|
break;
|
1034
1101
|
}
|
1035
1102
|
case response.SERVERLIST: {
|
1036
|
-
GPR_ASSERT(
|
1103
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1037
1104
|
auto serverlist_wrapper =
|
1038
1105
|
MakeRefCounted<Serverlist>(std::move(response.serverlist));
|
1039
1106
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1040
|
-
grpc_core::UniquePtr<char> serverlist_text =
|
1041
|
-
serverlist_wrapper->AsText();
|
1042
1107
|
gpr_log(GPR_INFO,
|
1043
1108
|
"[grpclb %p] lb_calld=%p: Serverlist with %" PRIuPTR
|
1044
1109
|
" servers received:\n%s",
|
1045
|
-
grpclb_policy,
|
1110
|
+
grpclb_policy(), this,
|
1046
1111
|
serverlist_wrapper->serverlist().size(),
|
1047
|
-
|
1112
|
+
serverlist_wrapper->AsText().c_str());
|
1048
1113
|
}
|
1049
|
-
|
1114
|
+
seen_serverlist_ = true;
|
1050
1115
|
// Start sending client load report only after we start using the
|
1051
1116
|
// serverlist returned from the current LB call.
|
1052
|
-
if (
|
1053
|
-
|
1054
|
-
lb_calld->client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1117
|
+
if (client_stats_report_interval_ > 0 && client_stats_ == nullptr) {
|
1118
|
+
client_stats_ = MakeRefCounted<GrpcLbClientStats>();
|
1055
1119
|
// Ref held by callback.
|
1056
|
-
|
1057
|
-
|
1120
|
+
Ref(DEBUG_LOCATION, "client_load_report").release();
|
1121
|
+
ScheduleNextClientLoadReportLocked();
|
1058
1122
|
}
|
1059
1123
|
// Check if the serverlist differs from the previous one.
|
1060
|
-
if (grpclb_policy->serverlist_ != nullptr &&
|
1061
|
-
*grpclb_policy->serverlist_ == *serverlist_wrapper) {
|
1124
|
+
if (grpclb_policy()->serverlist_ != nullptr &&
|
1125
|
+
*grpclb_policy()->serverlist_ == *serverlist_wrapper) {
|
1062
1126
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1063
1127
|
gpr_log(GPR_INFO,
|
1064
1128
|
"[grpclb %p] lb_calld=%p: Incoming server list identical "
|
1065
1129
|
"to current, ignoring.",
|
1066
|
-
grpclb_policy,
|
1130
|
+
grpclb_policy(), this);
|
1067
1131
|
}
|
1068
1132
|
} else { // New serverlist.
|
1069
1133
|
// Dispose of the fallback.
|
@@ -1085,167 +1149,145 @@ void GrpcLb::BalancerCallState::OnBalancerMessageReceivedLocked(
|
|
1085
1149
|
// the grpclb implementation at this point, since we're deprecating
|
1086
1150
|
// it in favor of the xds policy. We will implement this the
|
1087
1151
|
// right way in the xds policy instead.
|
1088
|
-
if (grpclb_policy->fallback_mode_) {
|
1152
|
+
if (grpclb_policy()->fallback_mode_) {
|
1089
1153
|
gpr_log(GPR_INFO,
|
1090
1154
|
"[grpclb %p] Received response from balancer; exiting "
|
1091
1155
|
"fallback mode",
|
1092
|
-
grpclb_policy);
|
1093
|
-
grpclb_policy->fallback_mode_ = false;
|
1156
|
+
grpclb_policy());
|
1157
|
+
grpclb_policy()->fallback_mode_ = false;
|
1094
1158
|
}
|
1095
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1096
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1097
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1098
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1159
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1160
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1161
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1162
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1099
1163
|
}
|
1100
1164
|
// Update the serverlist in the GrpcLb instance. This serverlist
|
1101
1165
|
// instance will be destroyed either upon the next update or when the
|
1102
1166
|
// GrpcLb instance is destroyed.
|
1103
|
-
grpclb_policy->serverlist_ = std::move(serverlist_wrapper);
|
1104
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1167
|
+
grpclb_policy()->serverlist_ = std::move(serverlist_wrapper);
|
1168
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1105
1169
|
}
|
1106
1170
|
break;
|
1107
1171
|
}
|
1108
1172
|
case response.FALLBACK: {
|
1109
|
-
if (!grpclb_policy->fallback_mode_) {
|
1173
|
+
if (!grpclb_policy()->fallback_mode_) {
|
1110
1174
|
gpr_log(GPR_INFO,
|
1111
1175
|
"[grpclb %p] Entering fallback mode as requested by balancer",
|
1112
|
-
grpclb_policy);
|
1113
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1114
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1115
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1116
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1176
|
+
grpclb_policy());
|
1177
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1178
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1179
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1180
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1117
1181
|
}
|
1118
|
-
grpclb_policy->fallback_mode_ = true;
|
1119
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1182
|
+
grpclb_policy()->fallback_mode_ = true;
|
1183
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1120
1184
|
// Reset serverlist, so that if the balancer exits fallback
|
1121
1185
|
// mode by sending the same serverlist we were previously
|
1122
1186
|
// using, we don't incorrectly ignore it as a duplicate.
|
1123
|
-
grpclb_policy->serverlist_.reset();
|
1187
|
+
grpclb_policy()->serverlist_.reset();
|
1124
1188
|
}
|
1125
1189
|
break;
|
1126
1190
|
}
|
1127
1191
|
}
|
1128
1192
|
}
|
1129
1193
|
grpc_slice_unref_internal(response_slice);
|
1130
|
-
if (!grpclb_policy->shutting_down_) {
|
1194
|
+
if (!grpclb_policy()->shutting_down_) {
|
1131
1195
|
// Keep listening for serverlist updates.
|
1132
1196
|
grpc_op op;
|
1133
1197
|
memset(&op, 0, sizeof(op));
|
1134
1198
|
op.op = GRPC_OP_RECV_MESSAGE;
|
1135
|
-
op.data.recv_message.recv_message = &
|
1199
|
+
op.data.recv_message.recv_message = &recv_message_payload_;
|
1136
1200
|
op.flags = 0;
|
1137
1201
|
op.reserved = nullptr;
|
1138
1202
|
// Reuse the "OnBalancerMessageReceivedLocked" ref taken in StartQuery().
|
1139
|
-
GRPC_CLOSURE_INIT(&lb_calld->lb_on_balancer_message_received_,
|
1140
|
-
GrpcLb::BalancerCallState::OnBalancerMessageReceived,
|
1141
|
-
lb_calld, grpc_schedule_on_exec_ctx);
|
1142
1203
|
const grpc_call_error call_error = grpc_call_start_batch_and_execute(
|
1143
|
-
|
1144
|
-
&lb_calld->lb_on_balancer_message_received_);
|
1204
|
+
lb_call_, &op, 1, &lb_on_balancer_message_received_);
|
1145
1205
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
1146
1206
|
} else {
|
1147
|
-
|
1207
|
+
Unref(DEBUG_LOCATION, "on_message_received+grpclb_shutdown");
|
1148
1208
|
}
|
1149
1209
|
}
|
1150
1210
|
|
1151
|
-
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(
|
1152
|
-
|
1211
|
+
void GrpcLb::BalancerCallState::OnBalancerStatusReceived(
|
1212
|
+
void* arg, grpc_error_handle error) {
|
1153
1213
|
BalancerCallState* lb_calld = static_cast<BalancerCallState*>(arg);
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1214
|
+
(void)GRPC_ERROR_REF(error); // owned by lambda
|
1215
|
+
lb_calld->grpclb_policy()->work_serializer()->Run(
|
1216
|
+
[lb_calld, error]() { lb_calld->OnBalancerStatusReceivedLocked(error); },
|
1217
|
+
DEBUG_LOCATION);
|
1158
1218
|
}
|
1159
1219
|
|
1160
1220
|
void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
|
1161
|
-
|
1162
|
-
|
1163
|
-
GrpcLb* grpclb_policy = lb_calld->grpclb_policy();
|
1164
|
-
GPR_ASSERT(lb_calld->lb_call_ != nullptr);
|
1221
|
+
grpc_error_handle error) {
|
1222
|
+
GPR_ASSERT(lb_call_ != nullptr);
|
1165
1223
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1166
|
-
char* status_details =
|
1167
|
-
grpc_slice_to_c_string(lb_calld->lb_call_status_details_);
|
1224
|
+
char* status_details = grpc_slice_to_c_string(lb_call_status_details_);
|
1168
1225
|
gpr_log(GPR_INFO,
|
1169
1226
|
"[grpclb %p] lb_calld=%p: Status from LB server received. "
|
1170
1227
|
"Status = %d, details = '%s', (lb_call: %p), error '%s'",
|
1171
|
-
grpclb_policy,
|
1172
|
-
|
1228
|
+
grpclb_policy(), this, lb_call_status_, status_details, lb_call_,
|
1229
|
+
grpc_error_std_string(error).c_str());
|
1173
1230
|
gpr_free(status_details);
|
1174
1231
|
}
|
1232
|
+
GRPC_ERROR_UNREF(error);
|
1175
1233
|
// If this lb_calld is still in use, this call ended because of a failure so
|
1176
1234
|
// we want to retry connecting. Otherwise, we have deliberately ended this
|
1177
1235
|
// call and no further action is required.
|
1178
|
-
if (
|
1236
|
+
if (this == grpclb_policy()->lb_calld_.get()) {
|
1179
1237
|
// If the fallback-at-startup checks are pending, go into fallback mode
|
1180
1238
|
// immediately. This short-circuits the timeout for the fallback-at-startup
|
1181
1239
|
// case.
|
1182
|
-
if (grpclb_policy->fallback_at_startup_checks_pending_) {
|
1183
|
-
GPR_ASSERT(!
|
1240
|
+
if (grpclb_policy()->fallback_at_startup_checks_pending_) {
|
1241
|
+
GPR_ASSERT(!seen_serverlist_);
|
1184
1242
|
gpr_log(GPR_INFO,
|
1185
1243
|
"[grpclb %p] Balancer call finished without receiving "
|
1186
1244
|
"serverlist; entering fallback mode",
|
1187
|
-
grpclb_policy);
|
1188
|
-
grpclb_policy->fallback_at_startup_checks_pending_ = false;
|
1189
|
-
grpc_timer_cancel(&grpclb_policy->lb_fallback_timer_);
|
1190
|
-
grpclb_policy->CancelBalancerChannelConnectivityWatchLocked();
|
1191
|
-
grpclb_policy->fallback_mode_ = true;
|
1192
|
-
grpclb_policy->CreateOrUpdateChildPolicyLocked();
|
1245
|
+
grpclb_policy());
|
1246
|
+
grpclb_policy()->fallback_at_startup_checks_pending_ = false;
|
1247
|
+
grpc_timer_cancel(&grpclb_policy()->lb_fallback_timer_);
|
1248
|
+
grpclb_policy()->CancelBalancerChannelConnectivityWatchLocked();
|
1249
|
+
grpclb_policy()->fallback_mode_ = true;
|
1250
|
+
grpclb_policy()->CreateOrUpdateChildPolicyLocked();
|
1193
1251
|
} else {
|
1194
1252
|
// This handles the fallback-after-startup case.
|
1195
|
-
grpclb_policy->MaybeEnterFallbackModeAfterStartup();
|
1253
|
+
grpclb_policy()->MaybeEnterFallbackModeAfterStartup();
|
1196
1254
|
}
|
1197
|
-
grpclb_policy->lb_calld_.reset();
|
1198
|
-
GPR_ASSERT(!grpclb_policy->shutting_down_);
|
1199
|
-
grpclb_policy->channel_control_helper()->RequestReresolution();
|
1200
|
-
if (
|
1255
|
+
grpclb_policy()->lb_calld_.reset();
|
1256
|
+
GPR_ASSERT(!grpclb_policy()->shutting_down_);
|
1257
|
+
grpclb_policy()->channel_control_helper()->RequestReresolution();
|
1258
|
+
if (seen_initial_response_) {
|
1201
1259
|
// If we lose connection to the LB server, reset the backoff and restart
|
1202
1260
|
// the LB call immediately.
|
1203
|
-
grpclb_policy->lb_call_backoff_.Reset();
|
1204
|
-
grpclb_policy->StartBalancerCallLocked();
|
1261
|
+
grpclb_policy()->lb_call_backoff_.Reset();
|
1262
|
+
grpclb_policy()->StartBalancerCallLocked();
|
1205
1263
|
} else {
|
1206
1264
|
// If this LB call fails establishing any connection to the LB server,
|
1207
1265
|
// retry later.
|
1208
|
-
grpclb_policy->StartBalancerCallRetryTimerLocked();
|
1266
|
+
grpclb_policy()->StartBalancerCallRetryTimerLocked();
|
1209
1267
|
}
|
1210
1268
|
}
|
1211
|
-
|
1269
|
+
Unref(DEBUG_LOCATION, "lb_call_ended");
|
1212
1270
|
}
|
1213
1271
|
|
1214
1272
|
//
|
1215
1273
|
// helper code for creating balancer channel
|
1216
1274
|
//
|
1217
1275
|
|
1218
|
-
ServerAddressList ExtractBalancerAddresses(const
|
1219
|
-
ServerAddressList
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
// recursively use the grpclb policy in the channel used to talk to
|
1224
|
-
// the balancers. Note that we do NOT strip out the balancer_name
|
1225
|
-
// channel arg, since we need that to set the authority correctly
|
1226
|
-
// to talk to the balancers.
|
1227
|
-
static const char* args_to_remove[] = {
|
1228
|
-
GRPC_ARG_ADDRESS_IS_BALANCER,
|
1229
|
-
};
|
1230
|
-
balancer_addresses.emplace_back(
|
1231
|
-
addresses[i].address(),
|
1232
|
-
grpc_channel_args_copy_and_remove(addresses[i].args(), args_to_remove,
|
1233
|
-
GPR_ARRAY_SIZE(args_to_remove)));
|
1234
|
-
}
|
1235
|
-
}
|
1236
|
-
return balancer_addresses;
|
1276
|
+
ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
|
1277
|
+
const ServerAddressList* addresses =
|
1278
|
+
FindGrpclbBalancerAddressesInChannelArgs(args);
|
1279
|
+
if (addresses != nullptr) return *addresses;
|
1280
|
+
return ServerAddressList();
|
1237
1281
|
}
|
1238
1282
|
|
1239
1283
|
/* Returns the channel args for the LB channel, used to create a bidirectional
|
1240
1284
|
* stream for the reception of load balancing updates.
|
1241
1285
|
*
|
1242
1286
|
* Inputs:
|
1243
|
-
* - \a addresses: corresponding to the balancers.
|
1244
1287
|
* - \a response_generator: in order to propagate updates from the resolver
|
1245
1288
|
* above the grpclb policy.
|
1246
1289
|
* - \a args: other args inherited from the grpclb policy. */
|
1247
1290
|
grpc_channel_args* BuildBalancerChannelArgs(
|
1248
|
-
const ServerAddressList& addresses,
|
1249
1291
|
FakeResolverResponseGenerator* response_generator,
|
1250
1292
|
const grpc_channel_args* args) {
|
1251
1293
|
// Channel args to remove.
|
@@ -1277,40 +1319,45 @@ grpc_channel_args* BuildBalancerChannelArgs(
|
|
1277
1319
|
GRPC_ARG_CHANNELZ_CHANNEL_NODE,
|
1278
1320
|
};
|
1279
1321
|
// Channel args to add.
|
1280
|
-
InlinedVector<grpc_arg, 3> args_to_add
|
1281
|
-
|
1282
|
-
|
1283
|
-
args_to_add.emplace_back(
|
1322
|
+
absl::InlinedVector<grpc_arg, 3> args_to_add = {
|
1323
|
+
// The fake resolver response generator, which we use to inject
|
1324
|
+
// address updates into the LB channel.
|
1284
1325
|
grpc_core::FakeResolverResponseGenerator::MakeChannelArg(
|
1285
|
-
response_generator)
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
|
1294
|
-
arg->value.pointer.p != nullptr) {
|
1295
|
-
channelz_node = static_cast<channelz::ChannelNode*>(arg->value.pointer.p);
|
1296
|
-
args_to_add.emplace_back(
|
1297
|
-
channelz::MakeParentUuidArg(channelz_node->uuid()));
|
1298
|
-
}
|
1326
|
+
response_generator),
|
1327
|
+
// A channel arg indicating the target is a grpclb load balancer.
|
1328
|
+
grpc_channel_arg_integer_create(
|
1329
|
+
const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
|
1330
|
+
// Tells channelz that this is an internal channel.
|
1331
|
+
grpc_channel_arg_integer_create(
|
1332
|
+
const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
|
1333
|
+
};
|
1299
1334
|
// Construct channel args.
|
1300
1335
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
1301
1336
|
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
|
1302
1337
|
args_to_add.size());
|
1303
1338
|
// Make any necessary modifications for security.
|
1304
|
-
return ModifyGrpclbBalancerChannelArgs(
|
1339
|
+
return ModifyGrpclbBalancerChannelArgs(new_args);
|
1305
1340
|
}
|
1306
1341
|
|
1307
1342
|
//
|
1308
1343
|
// ctor and dtor
|
1309
1344
|
//
|
1310
1345
|
|
1346
|
+
std::string GetServerNameFromChannelArgs(const grpc_channel_args* args) {
|
1347
|
+
const char* server_uri =
|
1348
|
+
grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
|
1349
|
+
GPR_ASSERT(server_uri != nullptr);
|
1350
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1351
|
+
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1352
|
+
return std::string(absl::StripPrefix(uri->path(), "/"));
|
1353
|
+
}
|
1354
|
+
|
1311
1355
|
GrpcLb::GrpcLb(Args args)
|
1312
1356
|
: LoadBalancingPolicy(std::move(args)),
|
1357
|
+
server_name_(GetServerNameFromChannelArgs(args.args)),
|
1313
1358
|
response_generator_(MakeRefCounted<FakeResolverResponseGenerator>()),
|
1359
|
+
lb_call_timeout_ms_(grpc_channel_args_find_integer(
|
1360
|
+
args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS, {0, 0, INT_MAX})),
|
1314
1361
|
lb_call_backoff_(
|
1315
1362
|
BackOff::Options()
|
1316
1363
|
.set_initial_backoff(GRPC_GRPCLB_INITIAL_CONNECT_BACKOFF_SECONDS *
|
@@ -1318,41 +1365,42 @@ GrpcLb::GrpcLb(Args args)
|
|
1318
1365
|
.set_multiplier(GRPC_GRPCLB_RECONNECT_BACKOFF_MULTIPLIER)
|
1319
1366
|
.set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
|
1320
1367
|
.set_max_backoff(GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS *
|
1321
|
-
1000))
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
server_name_ = gpr_strdup(uri->path[0] == '/' ? uri->path + 1 : uri->path);
|
1368
|
+
1000)),
|
1369
|
+
fallback_at_startup_timeout_(grpc_channel_args_find_integer(
|
1370
|
+
args.args, GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS,
|
1371
|
+
{GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX})),
|
1372
|
+
subchannel_cache_interval_ms_(grpc_channel_args_find_integer(
|
1373
|
+
args.args, GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS,
|
1374
|
+
{GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS, 0, INT_MAX})) {
|
1329
1375
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1330
1376
|
gpr_log(GPR_INFO,
|
1331
1377
|
"[grpclb %p] Will use '%s' as the server name for LB request.",
|
1332
|
-
this, server_name_);
|
1378
|
+
this, server_name_.c_str());
|
1333
1379
|
}
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
arg, {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX});
|
1380
|
+
// Closure Initialization
|
1381
|
+
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1382
|
+
grpc_schedule_on_exec_ctx);
|
1383
|
+
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1384
|
+
grpc_schedule_on_exec_ctx);
|
1385
|
+
GRPC_CLOSURE_INIT(&on_subchannel_cache_timer_, &OnSubchannelCacheTimer, this,
|
1386
|
+
nullptr);
|
1342
1387
|
}
|
1343
1388
|
|
1344
|
-
GrpcLb::~GrpcLb() {
|
1345
|
-
gpr_free((void*)server_name_);
|
1346
|
-
grpc_channel_args_destroy(args_);
|
1347
|
-
}
|
1389
|
+
GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
|
1348
1390
|
|
1349
1391
|
void GrpcLb::ShutdownLocked() {
|
1350
1392
|
shutting_down_ = true;
|
1351
1393
|
lb_calld_.reset();
|
1394
|
+
if (subchannel_cache_timer_pending_) {
|
1395
|
+
subchannel_cache_timer_pending_ = false;
|
1396
|
+
grpc_timer_cancel(&subchannel_cache_timer_);
|
1397
|
+
}
|
1398
|
+
cached_subchannels_.clear();
|
1352
1399
|
if (retry_timer_callback_pending_) {
|
1353
1400
|
grpc_timer_cancel(&lb_call_retry_timer_);
|
1354
1401
|
}
|
1355
1402
|
if (fallback_at_startup_checks_pending_) {
|
1403
|
+
fallback_at_startup_checks_pending_ = false;
|
1356
1404
|
grpc_timer_cancel(&lb_fallback_timer_);
|
1357
1405
|
CancelBalancerChannelConnectivityWatchLocked();
|
1358
1406
|
}
|
@@ -1366,6 +1414,12 @@ void GrpcLb::ShutdownLocked() {
|
|
1366
1414
|
// OnBalancerChannelConnectivityChangedLocked(), and we need to be
|
1367
1415
|
// alive when that callback is invoked.
|
1368
1416
|
if (lb_channel_ != nullptr) {
|
1417
|
+
if (parent_channelz_node_ != nullptr) {
|
1418
|
+
channelz::ChannelNode* child_channelz_node =
|
1419
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1420
|
+
GPR_ASSERT(child_channelz_node != nullptr);
|
1421
|
+
parent_channelz_node_->RemoveChildChannel(child_channelz_node->uuid());
|
1422
|
+
}
|
1369
1423
|
grpc_channel_destroy(lb_channel_);
|
1370
1424
|
lb_channel_ = nullptr;
|
1371
1425
|
}
|
@@ -1386,12 +1440,8 @@ void GrpcLb::ResetBackoffLocked() {
|
|
1386
1440
|
|
1387
1441
|
void GrpcLb::UpdateLocked(UpdateArgs args) {
|
1388
1442
|
const bool is_initial_update = lb_channel_ == nullptr;
|
1389
|
-
|
1390
|
-
|
1391
|
-
child_policy_config_ = grpclb_config->child_policy();
|
1392
|
-
} else {
|
1393
|
-
child_policy_config_ = nullptr;
|
1394
|
-
}
|
1443
|
+
config_ = args.config;
|
1444
|
+
GPR_ASSERT(config_ != nullptr);
|
1395
1445
|
ProcessAddressesAndChannelArgsLocked(args.addresses, *args.args);
|
1396
1446
|
// Update the existing child policy.
|
1397
1447
|
if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
|
@@ -1402,25 +1452,17 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1402
1452
|
// Start timer.
|
1403
1453
|
grpc_millis deadline = ExecCtx::Get()->Now() + fallback_at_startup_timeout_;
|
1404
1454
|
Ref(DEBUG_LOCATION, "on_fallback_timer").release(); // Ref for callback
|
1405
|
-
GRPC_CLOSURE_INIT(&lb_on_fallback_, &GrpcLb::OnFallbackTimer, this,
|
1406
|
-
grpc_schedule_on_exec_ctx);
|
1407
1455
|
grpc_timer_init(&lb_fallback_timer_, deadline, &lb_on_fallback_);
|
1408
1456
|
// Start watching the channel's connectivity state. If the channel
|
1409
1457
|
// goes into state TRANSIENT_FAILURE before the timer fires, we go into
|
1410
1458
|
// fallback mode even if the fallback timeout has not elapsed.
|
1411
|
-
|
1412
|
-
|
1413
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1459
|
+
ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
|
1460
|
+
GPR_ASSERT(client_channel != nullptr);
|
1414
1461
|
// Ref held by callback.
|
1415
|
-
Ref(DEBUG_LOCATION, "
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
grpc_client_channel_watch_connectivity_state(
|
1420
|
-
client_channel_elem,
|
1421
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1422
|
-
&lb_channel_connectivity_, &lb_channel_on_connectivity_changed_,
|
1423
|
-
nullptr);
|
1462
|
+
watcher_ = new StateWatcher(Ref(DEBUG_LOCATION, "StateWatcher"));
|
1463
|
+
client_channel->AddConnectivityWatcher(
|
1464
|
+
GRPC_CHANNEL_IDLE,
|
1465
|
+
OrphanablePtr<AsyncConnectivityStateWatcherInterface>(watcher_));
|
1424
1466
|
// Start balancer call.
|
1425
1467
|
StartBalancerCallLocked();
|
1426
1468
|
}
|
@@ -1430,46 +1472,49 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
|
|
1430
1472
|
// helpers for UpdateLocked()
|
1431
1473
|
//
|
1432
1474
|
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
for (size_t i = 0; i < addresses.size(); ++i) {
|
1441
|
-
if (!addresses[i].IsBalancer()) {
|
1442
|
-
backend_addresses.emplace_back(
|
1443
|
-
addresses[i].address(),
|
1444
|
-
grpc_channel_args_copy_and_add(addresses[i].args(), &arg, 1));
|
1445
|
-
}
|
1475
|
+
ServerAddressList GrpcLb::AddNullLbTokenToAddresses(
|
1476
|
+
const ServerAddressList& addresses) {
|
1477
|
+
ServerAddressList addresses_out;
|
1478
|
+
for (const ServerAddress& address : addresses) {
|
1479
|
+
addresses_out.emplace_back(address.WithAttribute(
|
1480
|
+
kGrpcLbAddressAttributeKey,
|
1481
|
+
absl::make_unique<TokenAndClientStatsAttribute>("", nullptr)));
|
1446
1482
|
}
|
1447
|
-
return
|
1483
|
+
return addresses_out;
|
1448
1484
|
}
|
1449
1485
|
|
1450
1486
|
void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
1451
1487
|
const ServerAddressList& addresses, const grpc_channel_args& args) {
|
1452
1488
|
// Update fallback address list.
|
1453
|
-
fallback_backend_addresses_ =
|
1489
|
+
fallback_backend_addresses_ = AddNullLbTokenToAddresses(addresses);
|
1454
1490
|
// Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
|
1455
1491
|
// since we use this to trigger the client_load_reporting filter.
|
1456
1492
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
1457
1493
|
grpc_arg new_arg = grpc_channel_arg_string_create(
|
1458
|
-
(
|
1494
|
+
const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
|
1459
1495
|
grpc_channel_args_destroy(args_);
|
1460
1496
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1461
1497
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
1462
1498
|
// Construct args for balancer channel.
|
1463
|
-
ServerAddressList balancer_addresses = ExtractBalancerAddresses(
|
1464
|
-
grpc_channel_args* lb_channel_args =
|
1465
|
-
|
1499
|
+
ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
|
1500
|
+
grpc_channel_args* lb_channel_args =
|
1501
|
+
BuildBalancerChannelArgs(response_generator_.get(), &args);
|
1466
1502
|
// Create balancer channel if needed.
|
1467
1503
|
if (lb_channel_ == nullptr) {
|
1468
|
-
|
1469
|
-
|
1470
|
-
|
1504
|
+
std::string uri_str = absl::StrCat("fake:///", server_name_);
|
1505
|
+
lb_channel_ =
|
1506
|
+
CreateGrpclbBalancerChannel(uri_str.c_str(), *lb_channel_args);
|
1471
1507
|
GPR_ASSERT(lb_channel_ != nullptr);
|
1472
|
-
|
1508
|
+
// Set up channelz linkage.
|
1509
|
+
channelz::ChannelNode* child_channelz_node =
|
1510
|
+
grpc_channel_get_channelz_node(lb_channel_);
|
1511
|
+
channelz::ChannelNode* parent_channelz_node =
|
1512
|
+
grpc_channel_args_find_pointer<channelz::ChannelNode>(
|
1513
|
+
&args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
|
1514
|
+
if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
|
1515
|
+
parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
|
1516
|
+
parent_channelz_node_ = parent_channelz_node->Ref();
|
1517
|
+
}
|
1473
1518
|
}
|
1474
1519
|
// Propagate updates to the LB channel (pick_first) through the fake
|
1475
1520
|
// resolver.
|
@@ -1479,60 +1524,10 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1479
1524
|
response_generator_->SetResponse(std::move(result));
|
1480
1525
|
}
|
1481
1526
|
|
1482
|
-
void GrpcLb::OnBalancerChannelConnectivityChanged(void* arg,
|
1483
|
-
grpc_error* error) {
|
1484
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1485
|
-
self->combiner()->Run(
|
1486
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1487
|
-
&GrpcLb::OnBalancerChannelConnectivityChangedLocked,
|
1488
|
-
self, nullptr),
|
1489
|
-
GRPC_ERROR_REF(error));
|
1490
|
-
}
|
1491
|
-
|
1492
|
-
void GrpcLb::OnBalancerChannelConnectivityChangedLocked(void* arg,
|
1493
|
-
grpc_error* /*error*/) {
|
1494
|
-
GrpcLb* self = static_cast<GrpcLb*>(arg);
|
1495
|
-
if (!self->shutting_down_ && self->fallback_at_startup_checks_pending_) {
|
1496
|
-
if (self->lb_channel_connectivity_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
|
1497
|
-
// Not in TRANSIENT_FAILURE. Renew connectivity watch.
|
1498
|
-
grpc_channel_element* client_channel_elem =
|
1499
|
-
grpc_channel_stack_last_element(
|
1500
|
-
grpc_channel_get_channel_stack(self->lb_channel_));
|
1501
|
-
GPR_ASSERT(client_channel_elem->filter == &grpc_client_channel_filter);
|
1502
|
-
GRPC_CLOSURE_INIT(&self->lb_channel_on_connectivity_changed_,
|
1503
|
-
&GrpcLb::OnBalancerChannelConnectivityChanged, self,
|
1504
|
-
grpc_schedule_on_exec_ctx);
|
1505
|
-
grpc_client_channel_watch_connectivity_state(
|
1506
|
-
client_channel_elem,
|
1507
|
-
grpc_polling_entity_create_from_pollset_set(
|
1508
|
-
self->interested_parties()),
|
1509
|
-
&self->lb_channel_connectivity_,
|
1510
|
-
&self->lb_channel_on_connectivity_changed_, nullptr);
|
1511
|
-
return; // Early out so we don't drop the ref below.
|
1512
|
-
}
|
1513
|
-
// In TRANSIENT_FAILURE. Cancel the fallback timer and go into
|
1514
|
-
// fallback mode immediately.
|
1515
|
-
gpr_log(GPR_INFO,
|
1516
|
-
"[grpclb %p] balancer channel in state TRANSIENT_FAILURE; "
|
1517
|
-
"entering fallback mode",
|
1518
|
-
self);
|
1519
|
-
self->fallback_at_startup_checks_pending_ = false;
|
1520
|
-
grpc_timer_cancel(&self->lb_fallback_timer_);
|
1521
|
-
self->fallback_mode_ = true;
|
1522
|
-
self->CreateOrUpdateChildPolicyLocked();
|
1523
|
-
}
|
1524
|
-
// Done watching connectivity state, so drop ref.
|
1525
|
-
self->Unref(DEBUG_LOCATION, "watch_lb_channel_connectivity");
|
1526
|
-
}
|
1527
|
-
|
1528
1527
|
void GrpcLb::CancelBalancerChannelConnectivityWatchLocked() {
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
grpc_client_channel_watch_connectivity_state(
|
1533
|
-
client_channel_elem,
|
1534
|
-
grpc_polling_entity_create_from_pollset_set(interested_parties()),
|
1535
|
-
nullptr, &lb_channel_on_connectivity_changed_, nullptr);
|
1528
|
+
ClientChannel* client_channel = ClientChannel::GetFromChannel(lb_channel_);
|
1529
|
+
GPR_ASSERT(client_channel != nullptr);
|
1530
|
+
client_channel->RemoveConnectivityWatcher(watcher_);
|
1536
1531
|
}
|
1537
1532
|
|
1538
1533
|
//
|
@@ -1571,33 +1566,30 @@ void GrpcLb::StartBalancerCallRetryTimerLocked() {
|
|
1571
1566
|
// with the callback.
|
1572
1567
|
auto self = Ref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1573
1568
|
self.release();
|
1574
|
-
GRPC_CLOSURE_INIT(&lb_on_call_retry_, &GrpcLb::OnBalancerCallRetryTimer, this,
|
1575
|
-
grpc_schedule_on_exec_ctx);
|
1576
1569
|
retry_timer_callback_pending_ = true;
|
1577
1570
|
grpc_timer_init(&lb_call_retry_timer_, next_try, &lb_on_call_retry_);
|
1578
1571
|
}
|
1579
1572
|
|
1580
|
-
void GrpcLb::OnBalancerCallRetryTimer(void* arg,
|
1573
|
+
void GrpcLb::OnBalancerCallRetryTimer(void* arg, grpc_error_handle error) {
|
1581
1574
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
|
1575
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
1576
|
+
grpclb_policy->work_serializer()->Run(
|
1577
|
+
[grpclb_policy, error]() {
|
1578
|
+
grpclb_policy->OnBalancerCallRetryTimerLocked(error);
|
1579
|
+
},
|
1580
|
+
DEBUG_LOCATION);
|
1587
1581
|
}
|
1588
1582
|
|
1589
|
-
void GrpcLb::OnBalancerCallRetryTimerLocked(
|
1590
|
-
|
1591
|
-
|
1592
|
-
if (!grpclb_policy->shutting_down_ && error == GRPC_ERROR_NONE &&
|
1593
|
-
grpclb_policy->lb_calld_ == nullptr) {
|
1583
|
+
void GrpcLb::OnBalancerCallRetryTimerLocked(grpc_error_handle error) {
|
1584
|
+
retry_timer_callback_pending_ = false;
|
1585
|
+
if (!shutting_down_ && error == GRPC_ERROR_NONE && lb_calld_ == nullptr) {
|
1594
1586
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1595
|
-
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server",
|
1596
|
-
grpclb_policy);
|
1587
|
+
gpr_log(GPR_INFO, "[grpclb %p] Restarting call to LB server", this);
|
1597
1588
|
}
|
1598
|
-
|
1589
|
+
StartBalancerCallLocked();
|
1599
1590
|
}
|
1600
|
-
|
1591
|
+
Unref(DEBUG_LOCATION, "on_balancer_call_retry_timer");
|
1592
|
+
GRPC_ERROR_UNREF(error);
|
1601
1593
|
}
|
1602
1594
|
|
1603
1595
|
//
|
@@ -1622,30 +1614,30 @@ void GrpcLb::MaybeEnterFallbackModeAfterStartup() {
|
|
1622
1614
|
}
|
1623
1615
|
}
|
1624
1616
|
|
1625
|
-
void GrpcLb::OnFallbackTimer(void* arg,
|
1617
|
+
void GrpcLb::OnFallbackTimer(void* arg, grpc_error_handle error) {
|
1626
1618
|
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1627
|
-
|
1628
|
-
|
1629
|
-
|
1630
|
-
|
1619
|
+
(void)GRPC_ERROR_REF(error); // ref owned by lambda
|
1620
|
+
grpclb_policy->work_serializer()->Run(
|
1621
|
+
[grpclb_policy, error]() { grpclb_policy->OnFallbackTimerLocked(error); },
|
1622
|
+
DEBUG_LOCATION);
|
1631
1623
|
}
|
1632
1624
|
|
1633
|
-
void GrpcLb::OnFallbackTimerLocked(
|
1634
|
-
GrpcLb* grpclb_policy = static_cast<GrpcLb*>(arg);
|
1625
|
+
void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
|
1635
1626
|
// If we receive a serverlist after the timer fires but before this callback
|
1636
1627
|
// actually runs, don't fall back.
|
1637
|
-
if (
|
1638
|
-
|
1628
|
+
if (fallback_at_startup_checks_pending_ && !shutting_down_ &&
|
1629
|
+
error == GRPC_ERROR_NONE) {
|
1639
1630
|
gpr_log(GPR_INFO,
|
1640
1631
|
"[grpclb %p] No response from balancer after fallback timeout; "
|
1641
1632
|
"entering fallback mode",
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1633
|
+
this);
|
1634
|
+
fallback_at_startup_checks_pending_ = false;
|
1635
|
+
CancelBalancerChannelConnectivityWatchLocked();
|
1636
|
+
fallback_mode_ = true;
|
1637
|
+
CreateOrUpdateChildPolicyLocked();
|
1647
1638
|
}
|
1648
|
-
|
1639
|
+
Unref(DEBUG_LOCATION, "on_fallback_timer");
|
1640
|
+
GRPC_ERROR_UNREF(error);
|
1649
1641
|
}
|
1650
1642
|
|
1651
1643
|
//
|
@@ -1654,7 +1646,7 @@ void GrpcLb::OnFallbackTimerLocked(void* arg, grpc_error* error) {
|
|
1654
1646
|
|
1655
1647
|
grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
1656
1648
|
bool is_backend_from_grpclb_load_balancer) {
|
1657
|
-
InlinedVector<grpc_arg, 2> args_to_add;
|
1649
|
+
absl::InlinedVector<grpc_arg, 2> args_to_add;
|
1658
1650
|
args_to_add.emplace_back(grpc_channel_arg_integer_create(
|
1659
1651
|
const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
|
1660
1652
|
is_backend_from_grpclb_load_balancer));
|
@@ -1669,7 +1661,7 @@ grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
|
|
1669
1661
|
OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
|
1670
1662
|
const grpc_channel_args* args) {
|
1671
1663
|
LoadBalancingPolicy::Args lb_policy_args;
|
1672
|
-
lb_policy_args.
|
1664
|
+
lb_policy_args.work_serializer = work_serializer();
|
1673
1665
|
lb_policy_args.args = args;
|
1674
1666
|
lb_policy_args.channel_control_helper = absl::make_unique<Helper>(Ref());
|
1675
1667
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
@@ -1707,7 +1699,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1707
1699
|
update_args.args =
|
1708
1700
|
CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
|
1709
1701
|
GPR_ASSERT(update_args.args != nullptr);
|
1710
|
-
update_args.config =
|
1702
|
+
update_args.config = config_->child_policy();
|
1711
1703
|
// Create child policy if needed.
|
1712
1704
|
if (child_policy_ == nullptr) {
|
1713
1705
|
child_policy_ = CreateChildPolicyLocked(update_args.args);
|
@@ -1720,6 +1712,57 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
|
|
1720
1712
|
child_policy_->UpdateLocked(std::move(update_args));
|
1721
1713
|
}
|
1722
1714
|
|
1715
|
+
//
|
1716
|
+
// subchannel caching
|
1717
|
+
//
|
1718
|
+
|
1719
|
+
void GrpcLb::CacheDeletedSubchannelLocked(
|
1720
|
+
RefCountedPtr<SubchannelInterface> subchannel) {
|
1721
|
+
grpc_millis deletion_time =
|
1722
|
+
ExecCtx::Get()->Now() + subchannel_cache_interval_ms_;
|
1723
|
+
cached_subchannels_[deletion_time].push_back(std::move(subchannel));
|
1724
|
+
if (!subchannel_cache_timer_pending_) {
|
1725
|
+
Ref(DEBUG_LOCATION, "OnSubchannelCacheTimer").release();
|
1726
|
+
subchannel_cache_timer_pending_ = true;
|
1727
|
+
StartSubchannelCacheTimerLocked();
|
1728
|
+
}
|
1729
|
+
}
|
1730
|
+
|
1731
|
+
void GrpcLb::StartSubchannelCacheTimerLocked() {
|
1732
|
+
GPR_ASSERT(!cached_subchannels_.empty());
|
1733
|
+
grpc_timer_init(&subchannel_cache_timer_, cached_subchannels_.begin()->first,
|
1734
|
+
&on_subchannel_cache_timer_);
|
1735
|
+
}
|
1736
|
+
|
1737
|
+
void GrpcLb::OnSubchannelCacheTimer(void* arg, grpc_error_handle error) {
|
1738
|
+
auto* self = static_cast<GrpcLb*>(arg);
|
1739
|
+
(void)GRPC_ERROR_REF(error);
|
1740
|
+
self->work_serializer()->Run(
|
1741
|
+
[self, error]() { self->GrpcLb::OnSubchannelCacheTimerLocked(error); },
|
1742
|
+
DEBUG_LOCATION);
|
1743
|
+
}
|
1744
|
+
|
1745
|
+
void GrpcLb::OnSubchannelCacheTimerLocked(grpc_error_handle error) {
|
1746
|
+
if (subchannel_cache_timer_pending_ && error == GRPC_ERROR_NONE) {
|
1747
|
+
auto it = cached_subchannels_.begin();
|
1748
|
+
if (it != cached_subchannels_.end()) {
|
1749
|
+
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1750
|
+
gpr_log(GPR_INFO,
|
1751
|
+
"[grpclb %p] removing %" PRIuPTR " subchannels from cache",
|
1752
|
+
this, it->second.size());
|
1753
|
+
}
|
1754
|
+
cached_subchannels_.erase(it);
|
1755
|
+
}
|
1756
|
+
if (!cached_subchannels_.empty()) {
|
1757
|
+
StartSubchannelCacheTimerLocked();
|
1758
|
+
return;
|
1759
|
+
}
|
1760
|
+
subchannel_cache_timer_pending_ = false;
|
1761
|
+
}
|
1762
|
+
Unref(DEBUG_LOCATION, "OnSubchannelCacheTimer");
|
1763
|
+
GRPC_ERROR_UNREF(error);
|
1764
|
+
}
|
1765
|
+
|
1723
1766
|
//
|
1724
1767
|
// factory
|
1725
1768
|
//
|
@@ -1734,15 +1777,26 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1734
1777
|
const char* name() const override { return kGrpclb; }
|
1735
1778
|
|
1736
1779
|
RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
|
1737
|
-
const Json& json,
|
1780
|
+
const Json& json, grpc_error_handle* error) const override {
|
1738
1781
|
GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
|
1739
1782
|
if (json.type() == Json::Type::JSON_NULL) {
|
1740
|
-
return MakeRefCounted<GrpcLbConfig>(nullptr);
|
1783
|
+
return MakeRefCounted<GrpcLbConfig>(nullptr, "");
|
1741
1784
|
}
|
1742
|
-
std::vector<
|
1785
|
+
std::vector<grpc_error_handle> error_list;
|
1743
1786
|
Json child_policy_config_json_tmp;
|
1744
1787
|
const Json* child_policy_config_json;
|
1745
|
-
|
1788
|
+
std::string service_name;
|
1789
|
+
auto it = json.object_value().find("serviceName");
|
1790
|
+
if (it != json.object_value().end()) {
|
1791
|
+
const Json& service_name_json = it->second;
|
1792
|
+
if (service_name_json.type() != Json::Type::STRING) {
|
1793
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
1794
|
+
"field:serviceName error:type should be string"));
|
1795
|
+
} else {
|
1796
|
+
service_name = service_name_json.string_value();
|
1797
|
+
}
|
1798
|
+
}
|
1799
|
+
it = json.object_value().find("childPolicy");
|
1746
1800
|
if (it == json.object_value().end()) {
|
1747
1801
|
child_policy_config_json_tmp = Json::Array{Json::Object{
|
1748
1802
|
{"round_robin", Json::Object()},
|
@@ -1751,18 +1805,19 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1751
1805
|
} else {
|
1752
1806
|
child_policy_config_json = &it->second;
|
1753
1807
|
}
|
1754
|
-
|
1808
|
+
grpc_error_handle parse_error = GRPC_ERROR_NONE;
|
1755
1809
|
RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
|
1756
1810
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
|
1757
1811
|
*child_policy_config_json, &parse_error);
|
1758
1812
|
if (parse_error != GRPC_ERROR_NONE) {
|
1759
|
-
std::vector<
|
1813
|
+
std::vector<grpc_error_handle> child_errors;
|
1760
1814
|
child_errors.push_back(parse_error);
|
1761
1815
|
error_list.push_back(
|
1762
1816
|
GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
|
1763
1817
|
}
|
1764
1818
|
if (error_list.empty()) {
|
1765
|
-
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config)
|
1819
|
+
return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
|
1820
|
+
std::move(service_name));
|
1766
1821
|
} else {
|
1767
1822
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
|
1768
1823
|
return nullptr;
|
@@ -1778,38 +1833,34 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
|
|
1778
1833
|
// Plugin registration
|
1779
1834
|
//
|
1780
1835
|
|
1781
|
-
namespace {
|
1782
|
-
|
1783
|
-
// Only add client_load_reporting filter if the grpclb LB policy is used.
|
1784
|
-
bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
1785
|
-
void* arg) {
|
1786
|
-
const grpc_channel_args* args =
|
1787
|
-
grpc_channel_stack_builder_get_channel_arguments(builder);
|
1788
|
-
const grpc_arg* channel_arg =
|
1789
|
-
grpc_channel_args_find(args, GRPC_ARG_LB_POLICY_NAME);
|
1790
|
-
if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_STRING &&
|
1791
|
-
strcmp(channel_arg->value.string, "grpclb") == 0) {
|
1792
|
-
// TODO(roth): When we get around to re-attempting
|
1793
|
-
// https://github.com/grpc/grpc/pull/16214, we should try to keep
|
1794
|
-
// this filter at the very top of the subchannel stack, since that
|
1795
|
-
// will minimize the number of metadata elements that the filter
|
1796
|
-
// needs to iterate through to find the ClientStats object.
|
1797
|
-
return grpc_channel_stack_builder_prepend_filter(
|
1798
|
-
builder, (const grpc_channel_filter*)arg, nullptr, nullptr);
|
1799
|
-
}
|
1800
|
-
return true;
|
1801
|
-
}
|
1802
|
-
|
1803
|
-
} // namespace
|
1804
|
-
|
1805
1836
|
void grpc_lb_policy_grpclb_init() {
|
1806
1837
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1807
1838
|
RegisterLoadBalancingPolicyFactory(
|
1808
1839
|
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1809
|
-
grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
|
1810
|
-
GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1811
|
-
maybe_add_client_load_reporting_filter,
|
1812
|
-
(void*)&grpc_client_load_reporting_filter);
|
1813
1840
|
}
|
1814
1841
|
|
1815
1842
|
void grpc_lb_policy_grpclb_shutdown() {}
|
1843
|
+
|
1844
|
+
namespace grpc_core {
|
1845
|
+
void RegisterGrpcLbLoadReportingFilter(CoreConfiguration::Builder* builder) {
|
1846
|
+
builder->channel_init()->RegisterStage(
|
1847
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1848
|
+
[](grpc_channel_stack_builder* builder) {
|
1849
|
+
const grpc_channel_args* args =
|
1850
|
+
grpc_channel_stack_builder_get_channel_arguments(builder);
|
1851
|
+
const grpc_arg* channel_arg =
|
1852
|
+
grpc_channel_args_find(args, GRPC_ARG_LB_POLICY_NAME);
|
1853
|
+
if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_STRING &&
|
1854
|
+
strcmp(channel_arg->value.string, "grpclb") == 0) {
|
1855
|
+
// TODO(roth): When we get around to re-attempting
|
1856
|
+
// https://github.com/grpc/grpc/pull/16214, we should try to keep
|
1857
|
+
// this filter at the very top of the subchannel stack, since that
|
1858
|
+
// will minimize the number of metadata elements that the filter
|
1859
|
+
// needs to iterate through to find the ClientStats object.
|
1860
|
+
return grpc_channel_stack_builder_prepend_filter(
|
1861
|
+
builder, &grpc_client_load_reporting_filter, nullptr, nullptr);
|
1862
|
+
}
|
1863
|
+
return true;
|
1864
|
+
});
|
1865
|
+
}
|
1866
|
+
} // namespace grpc_core
|