grpc 1.64.3 → 1.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -44,17 +44,15 @@
|
|
44
44
|
#include "src/core/lib/gprpp/orphanable.h"
|
45
45
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
46
46
|
#include "src/core/lib/gprpp/work_serializer.h"
|
47
|
-
#include "src/core/lib/json/json.h"
|
48
47
|
#include "src/core/lib/transport/connectivity_state.h"
|
49
48
|
#include "src/core/load_balancing/endpoint_list.h"
|
50
49
|
#include "src/core/load_balancing/lb_policy.h"
|
51
50
|
#include "src/core/load_balancing/lb_policy_factory.h"
|
52
51
|
#include "src/core/resolver/endpoint_addresses.h"
|
52
|
+
#include "src/core/util/json/json.h"
|
53
53
|
|
54
54
|
namespace grpc_core {
|
55
55
|
|
56
|
-
TraceFlag grpc_lb_round_robin_trace(false, "round_robin");
|
57
|
-
|
58
56
|
namespace {
|
59
57
|
|
60
58
|
constexpr absl::string_view kRoundRobin = "round_robin";
|
@@ -76,7 +74,7 @@ class RoundRobin final : public LoadBalancingPolicy {
|
|
76
74
|
const ChannelArgs& args,
|
77
75
|
std::vector<std::string>* errors)
|
78
76
|
: EndpointList(std::move(round_robin),
|
79
|
-
GRPC_TRACE_FLAG_ENABLED(
|
77
|
+
GRPC_TRACE_FLAG_ENABLED(round_robin)
|
80
78
|
? "RoundRobinEndpointList"
|
81
79
|
: nullptr) {
|
82
80
|
Init(endpoints, args,
|
@@ -186,7 +184,7 @@ RoundRobin::Picker::Picker(
|
|
186
184
|
// the picker, see https://github.com/grpc/grpc-go/issues/2580.
|
187
185
|
size_t index = absl::Uniform<size_t>(parent->bit_gen_, 0, pickers_.size());
|
188
186
|
last_picked_index_.store(index, std::memory_order_relaxed);
|
189
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
187
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
190
188
|
gpr_log(GPR_INFO,
|
191
189
|
"[RR %p picker %p] created picker from endpoint_list=%p "
|
192
190
|
"with %" PRIuPTR " READY children; last_picked_index_=%" PRIuPTR,
|
@@ -198,7 +196,7 @@ RoundRobin::Picker::Picker(
|
|
198
196
|
RoundRobin::PickResult RoundRobin::Picker::Pick(PickArgs args) {
|
199
197
|
size_t index = last_picked_index_.fetch_add(1, std::memory_order_relaxed) %
|
200
198
|
pickers_.size();
|
201
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
199
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
202
200
|
gpr_log(GPR_INFO,
|
203
201
|
"[RR %p picker %p] using picker index %" PRIuPTR ", picker=%p",
|
204
202
|
parent_, this, index, pickers_[index].get());
|
@@ -211,13 +209,13 @@ RoundRobin::PickResult RoundRobin::Picker::Pick(PickArgs args) {
|
|
211
209
|
//
|
212
210
|
|
213
211
|
RoundRobin::RoundRobin(Args args) : LoadBalancingPolicy(std::move(args)) {
|
214
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
212
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
215
213
|
gpr_log(GPR_INFO, "[RR %p] Created", this);
|
216
214
|
}
|
217
215
|
}
|
218
216
|
|
219
217
|
RoundRobin::~RoundRobin() {
|
220
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
218
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
221
219
|
gpr_log(GPR_INFO, "[RR %p] Destroying Round Robin policy", this);
|
222
220
|
}
|
223
221
|
CHECK(endpoint_list_ == nullptr);
|
@@ -225,7 +223,7 @@ RoundRobin::~RoundRobin() {
|
|
225
223
|
}
|
226
224
|
|
227
225
|
void RoundRobin::ShutdownLocked() {
|
228
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
226
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
229
227
|
gpr_log(GPR_INFO, "[RR %p] Shutting down", this);
|
230
228
|
}
|
231
229
|
shutdown_ = true;
|
@@ -243,12 +241,12 @@ void RoundRobin::ResetBackoffLocked() {
|
|
243
241
|
absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
|
244
242
|
EndpointAddressesIterator* addresses = nullptr;
|
245
243
|
if (args.addresses.ok()) {
|
246
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
244
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
247
245
|
gpr_log(GPR_INFO, "[RR %p] received update", this);
|
248
246
|
}
|
249
247
|
addresses = args.addresses->get();
|
250
248
|
} else {
|
251
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
249
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
252
250
|
gpr_log(GPR_INFO, "[RR %p] received update with address error: %s", this,
|
253
251
|
args.addresses.status().ToString().c_str());
|
254
252
|
}
|
@@ -257,7 +255,7 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
|
|
257
255
|
if (endpoint_list_ != nullptr) return args.addresses.status();
|
258
256
|
}
|
259
257
|
// Create new child list, replacing the previous pending list, if any.
|
260
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
258
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin) &&
|
261
259
|
latest_pending_endpoint_list_ != nullptr) {
|
262
260
|
gpr_log(GPR_INFO, "[RR %p] replacing previous pending child list %p", this,
|
263
261
|
latest_pending_endpoint_list_.get());
|
@@ -269,8 +267,7 @@ absl::Status RoundRobin::UpdateLocked(UpdateArgs args) {
|
|
269
267
|
// If the new list is empty, immediately promote it to
|
270
268
|
// endpoint_list_ and report TRANSIENT_FAILURE.
|
271
269
|
if (latest_pending_endpoint_list_->size() == 0) {
|
272
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
273
|
-
endpoint_list_ != nullptr) {
|
270
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin) && endpoint_list_ != nullptr) {
|
274
271
|
gpr_log(GPR_INFO, "[RR %p] replacing previous child list %p", this,
|
275
272
|
endpoint_list_.get());
|
276
273
|
}
|
@@ -305,7 +302,7 @@ void RoundRobin::RoundRobinEndpointList::RoundRobinEndpoint::OnStateUpdate(
|
|
305
302
|
grpc_connectivity_state new_state, const absl::Status& status) {
|
306
303
|
auto* rr_endpoint_list = endpoint_list<RoundRobinEndpointList>();
|
307
304
|
auto* round_robin = policy<RoundRobin>();
|
308
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
305
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
309
306
|
gpr_log(
|
310
307
|
GPR_INFO,
|
311
308
|
"[RR %p] connectivity changed for child %p, endpoint_list %p "
|
@@ -315,7 +312,7 @@ void RoundRobin::RoundRobinEndpointList::RoundRobinEndpoint::OnStateUpdate(
|
|
315
312
|
ConnectivityStateName(new_state), status.ToString().c_str());
|
316
313
|
}
|
317
314
|
if (new_state == GRPC_CHANNEL_IDLE) {
|
318
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
315
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
319
316
|
gpr_log(GPR_INFO, "[RR %p] child %p reported IDLE; requesting connection",
|
320
317
|
round_robin, this);
|
321
318
|
}
|
@@ -378,7 +375,7 @@ void RoundRobin::RoundRobinEndpointList::
|
|
378
375
|
(round_robin->endpoint_list_->num_ready_ == 0 ||
|
379
376
|
(num_ready_ > 0 && AllEndpointsSeenInitialState()) ||
|
380
377
|
num_transient_failure_ == size())) {
|
381
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
378
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
382
379
|
const std::string old_counters_string =
|
383
380
|
round_robin->endpoint_list_ != nullptr
|
384
381
|
? round_robin->endpoint_list_->CountersString()
|
@@ -398,7 +395,7 @@ void RoundRobin::RoundRobinEndpointList::
|
|
398
395
|
// 2) ANY child is CONNECTING => policy is CONNECTING.
|
399
396
|
// 3) ALL children are TRANSIENT_FAILURE => policy is TRANSIENT_FAILURE.
|
400
397
|
if (num_ready_ > 0) {
|
401
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
398
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
402
399
|
gpr_log(GPR_INFO, "[RR %p] reporting READY with child list %p",
|
403
400
|
round_robin, this);
|
404
401
|
}
|
@@ -414,7 +411,7 @@ void RoundRobin::RoundRobinEndpointList::
|
|
414
411
|
GRPC_CHANNEL_READY, absl::OkStatus(),
|
415
412
|
MakeRefCounted<Picker>(round_robin, std::move(pickers)));
|
416
413
|
} else if (num_connecting_ > 0) {
|
417
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
414
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
418
415
|
gpr_log(GPR_INFO, "[RR %p] reporting CONNECTING with child list %p",
|
419
416
|
round_robin, this);
|
420
417
|
}
|
@@ -422,7 +419,7 @@ void RoundRobin::RoundRobinEndpointList::
|
|
422
419
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
423
420
|
MakeRefCounted<QueuePicker>(nullptr));
|
424
421
|
} else if (num_transient_failure_ == size()) {
|
425
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
422
|
+
if (GRPC_TRACE_FLAG_ENABLED(round_robin)) {
|
426
423
|
gpr_log(GPR_INFO,
|
427
424
|
"[RR %p] reporting TRANSIENT_FAILURE with child list %p: %s",
|
428
425
|
round_robin, this, status_for_tf.ToString().c_str());
|
@@ -45,10 +45,7 @@
|
|
45
45
|
#include <grpc/support/port_platform.h>
|
46
46
|
|
47
47
|
#include "src/core/lib/channel/channel_args.h"
|
48
|
-
#include "src/core/lib/channel/metrics.h"
|
49
48
|
#include "src/core/lib/config/core_configuration.h"
|
50
|
-
#include "src/core/lib/debug/stats.h"
|
51
|
-
#include "src/core/lib/debug/stats_data.h"
|
52
49
|
#include "src/core/lib/debug/trace.h"
|
53
50
|
#include "src/core/lib/experiments/experiments.h"
|
54
51
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -61,9 +58,6 @@
|
|
61
58
|
#include "src/core/lib/gprpp/work_serializer.h"
|
62
59
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
63
60
|
#include "src/core/lib/iomgr/resolved_address.h"
|
64
|
-
#include "src/core/lib/json/json.h"
|
65
|
-
#include "src/core/lib/json/json_args.h"
|
66
|
-
#include "src/core/lib/json/json_object_loader.h"
|
67
61
|
#include "src/core/lib/transport/connectivity_state.h"
|
68
62
|
#include "src/core/load_balancing/backend_metric_data.h"
|
69
63
|
#include "src/core/load_balancing/endpoint_list.h"
|
@@ -74,23 +68,31 @@
|
|
74
68
|
#include "src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h"
|
75
69
|
#include "src/core/load_balancing/weighted_target/weighted_target.h"
|
76
70
|
#include "src/core/resolver/endpoint_addresses.h"
|
71
|
+
#include "src/core/telemetry/metrics.h"
|
72
|
+
#include "src/core/telemetry/stats.h"
|
73
|
+
#include "src/core/telemetry/stats_data.h"
|
74
|
+
#include "src/core/util/json/json.h"
|
75
|
+
#include "src/core/util/json/json_args.h"
|
76
|
+
#include "src/core/util/json/json_object_loader.h"
|
77
77
|
|
78
78
|
namespace grpc_core {
|
79
79
|
|
80
|
-
TraceFlag grpc_lb_wrr_trace(false, "weighted_round_robin_lb");
|
81
|
-
|
82
80
|
namespace {
|
83
81
|
|
84
82
|
constexpr absl::string_view kWeightedRoundRobin = "weighted_round_robin";
|
85
83
|
|
86
84
|
constexpr absl::string_view kMetricLabelLocality = "grpc.lb.locality";
|
87
85
|
|
88
|
-
const auto kMetricRrFallback =
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
86
|
+
const auto kMetricRrFallback =
|
87
|
+
GlobalInstrumentsRegistry::RegisterUInt64Counter(
|
88
|
+
"grpc.lb.wrr.rr_fallback",
|
89
|
+
"EXPERIMENTAL. Number of scheduler updates in which there were not "
|
90
|
+
"enough endpoints with valid weight, which caused the WRR policy to "
|
91
|
+
"fall back to RR behavior.",
|
92
|
+
"{update}", false)
|
93
|
+
.Labels(kMetricLabelTarget)
|
94
|
+
.OptionalLabels(kMetricLabelLocality)
|
95
|
+
.Build();
|
94
96
|
|
95
97
|
const auto kMetricEndpointWeightNotYetUsable =
|
96
98
|
GlobalInstrumentsRegistry::RegisterUInt64Counter(
|
@@ -99,14 +101,20 @@ const auto kMetricEndpointWeightNotYetUsable =
|
|
99
101
|
"don't yet have usable weight information (i.e., either the load "
|
100
102
|
"report has not yet been received, or it is within the blackout "
|
101
103
|
"period).",
|
102
|
-
"{endpoint}",
|
104
|
+
"{endpoint}", false)
|
105
|
+
.Labels(kMetricLabelTarget)
|
106
|
+
.OptionalLabels(kMetricLabelLocality)
|
107
|
+
.Build();
|
103
108
|
|
104
109
|
const auto kMetricEndpointWeightStale =
|
105
110
|
GlobalInstrumentsRegistry::RegisterUInt64Counter(
|
106
111
|
"grpc.lb.wrr.endpoint_weight_stale",
|
107
112
|
"EXPERIMENTAL. Number of endpoints from each scheduler update whose "
|
108
113
|
"latest weight is older than the expiration period.",
|
109
|
-
"{endpoint}",
|
114
|
+
"{endpoint}", false)
|
115
|
+
.Labels(kMetricLabelTarget)
|
116
|
+
.OptionalLabels(kMetricLabelLocality)
|
117
|
+
.Build();
|
110
118
|
|
111
119
|
const auto kMetricEndpointWeights =
|
112
120
|
GlobalInstrumentsRegistry::RegisterDoubleHistogram(
|
@@ -115,7 +123,10 @@ const auto kMetricEndpointWeights =
|
|
115
123
|
"Each bucket will be a counter that is incremented once for every "
|
116
124
|
"endpoint whose weight is within that range. Note that endpoints "
|
117
125
|
"without usable weights will have weight 0.",
|
118
|
-
"{weight}",
|
126
|
+
"{weight}", false)
|
127
|
+
.Labels(kMetricLabelTarget)
|
128
|
+
.OptionalLabels(kMetricLabelLocality)
|
129
|
+
.Build();
|
119
130
|
|
120
131
|
// Config for WRR policy.
|
121
132
|
class WeightedRoundRobinConfig final : public LoadBalancingPolicy::Config {
|
@@ -269,7 +280,7 @@ class WeightedRoundRobin final : public LoadBalancingPolicy {
|
|
269
280
|
EndpointAddressesIterator* endpoints,
|
270
281
|
const ChannelArgs& args, std::vector<std::string>* errors)
|
271
282
|
: EndpointList(std::move(wrr),
|
272
|
-
GRPC_TRACE_FLAG_ENABLED(
|
283
|
+
GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)
|
273
284
|
? "WrrEndpointList"
|
274
285
|
: nullptr) {
|
275
286
|
Init(endpoints, args,
|
@@ -436,7 +447,7 @@ void WeightedRoundRobin::EndpointWeight::MaybeUpdateWeight(
|
|
436
447
|
weight = qps / (utilization + penalty);
|
437
448
|
}
|
438
449
|
if (weight == 0) {
|
439
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
450
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
440
451
|
gpr_log(GPR_INFO,
|
441
452
|
"[WRR %p] subchannel %s: qps=%f, eps=%f, utilization=%f: "
|
442
453
|
"error_util_penalty=%f, weight=%f (not updating)",
|
@@ -448,7 +459,7 @@ void WeightedRoundRobin::EndpointWeight::MaybeUpdateWeight(
|
|
448
459
|
Timestamp now = Timestamp::Now();
|
449
460
|
// Grab the lock and update the data.
|
450
461
|
MutexLock lock(&mu_);
|
451
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
462
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
452
463
|
gpr_log(GPR_INFO,
|
453
464
|
"[WRR %p] subchannel %s: qps=%f, eps=%f, utilization=%f "
|
454
465
|
"error_util_penalty=%f : setting weight=%f weight_=%f now=%s "
|
@@ -467,7 +478,7 @@ float WeightedRoundRobin::EndpointWeight::GetWeight(
|
|
467
478
|
Timestamp now, Duration weight_expiration_period, Duration blackout_period,
|
468
479
|
uint64_t* num_not_yet_usable, uint64_t* num_stale) {
|
469
480
|
MutexLock lock(&mu_);
|
470
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
481
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
471
482
|
gpr_log(GPR_INFO,
|
472
483
|
"[WRR %p] subchannel %s: getting weight: now=%s "
|
473
484
|
"weight_expiration_period=%s blackout_period=%s "
|
@@ -545,7 +556,7 @@ WeightedRoundRobin::Picker::Picker(RefCountedPtr<WeightedRoundRobin> wrr,
|
|
545
556
|
}
|
546
557
|
global_stats().IncrementWrrSubchannelListSize(endpoint_list->size());
|
547
558
|
global_stats().IncrementWrrSubchannelReadySize(endpoints_.size());
|
548
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
559
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
549
560
|
gpr_log(GPR_INFO,
|
550
561
|
"[WRR %p picker %p] created picker from endpoint_list=%p "
|
551
562
|
"with %" PRIuPTR " subchannels",
|
@@ -555,14 +566,14 @@ WeightedRoundRobin::Picker::Picker(RefCountedPtr<WeightedRoundRobin> wrr,
|
|
555
566
|
}
|
556
567
|
|
557
568
|
WeightedRoundRobin::Picker::~Picker() {
|
558
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
569
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
559
570
|
gpr_log(GPR_INFO, "[WRR %p picker %p] destroying picker", wrr_.get(), this);
|
560
571
|
}
|
561
572
|
}
|
562
573
|
|
563
574
|
void WeightedRoundRobin::Picker::Orphaned() {
|
564
575
|
MutexLock lock(&timer_mu_);
|
565
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
576
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
566
577
|
gpr_log(GPR_INFO, "[WRR %p picker %p] cancelling timer", wrr_.get(), this);
|
567
578
|
}
|
568
579
|
wrr_->channel_control_helper()->GetEventEngine()->Cancel(*timer_handle_);
|
@@ -574,7 +585,7 @@ WeightedRoundRobin::PickResult WeightedRoundRobin::Picker::Pick(PickArgs args) {
|
|
574
585
|
size_t index = PickIndex();
|
575
586
|
CHECK(index < endpoints_.size());
|
576
587
|
auto& endpoint_info = endpoints_[index];
|
577
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
588
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
578
589
|
gpr_log(GPR_INFO,
|
579
590
|
"[WRR %p picker %p] returning index %" PRIuPTR ", picker=%p",
|
580
591
|
wrr_.get(), this, index, endpoint_info.picker.get());
|
@@ -630,7 +641,7 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
|
|
630
641
|
stats_plugins.AddCounter(kMetricEndpointWeightStale, num_stale,
|
631
642
|
{wrr_->channel_control_helper()->GetTarget()},
|
632
643
|
{wrr_->locality_name_});
|
633
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
644
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
634
645
|
gpr_log(GPR_INFO, "[WRR %p picker %p] new weights: %s", wrr_.get(), this,
|
635
646
|
absl::StrJoin(weights, " ").c_str());
|
636
647
|
}
|
@@ -640,12 +651,12 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
|
|
640
651
|
if (scheduler_or.has_value()) {
|
641
652
|
scheduler =
|
642
653
|
std::make_shared<StaticStrideScheduler>(std::move(*scheduler_or));
|
643
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
654
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
644
655
|
gpr_log(GPR_INFO, "[WRR %p picker %p] new scheduler: %p", wrr_.get(),
|
645
656
|
this, scheduler.get());
|
646
657
|
}
|
647
658
|
} else {
|
648
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
659
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
649
660
|
gpr_log(GPR_INFO, "[WRR %p picker %p] no scheduler, falling back to RR",
|
650
661
|
wrr_.get(), this);
|
651
662
|
}
|
@@ -658,7 +669,7 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
|
|
658
669
|
scheduler_ = std::move(scheduler);
|
659
670
|
}
|
660
671
|
// Start timer.
|
661
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
672
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
662
673
|
gpr_log(GPR_INFO, "[WRR %p picker %p] scheduling timer for %s", wrr_.get(),
|
663
674
|
this, config_->weight_update_period().ToString().c_str());
|
664
675
|
}
|
@@ -671,7 +682,7 @@ void WeightedRoundRobin::Picker::BuildSchedulerAndStartTimerLocked() {
|
|
671
682
|
{
|
672
683
|
MutexLock lock(&self->timer_mu_);
|
673
684
|
if (self->timer_handle_.has_value()) {
|
674
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
685
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
675
686
|
gpr_log(GPR_INFO, "[WRR %p picker %p] timer fired",
|
676
687
|
self->wrr_.get(), self.get());
|
677
688
|
}
|
@@ -696,14 +707,14 @@ WeightedRoundRobin::WeightedRoundRobin(Args args)
|
|
696
707
|
locality_name_(channel_args()
|
697
708
|
.GetString(GRPC_ARG_LB_WEIGHTED_TARGET_CHILD)
|
698
709
|
.value_or("")) {
|
699
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
710
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
700
711
|
gpr_log(GPR_INFO, "[WRR %p] Created -- locality_name=\"%s\"", this,
|
701
712
|
std::string(locality_name_).c_str());
|
702
713
|
}
|
703
714
|
}
|
704
715
|
|
705
716
|
WeightedRoundRobin::~WeightedRoundRobin() {
|
706
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
717
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
707
718
|
gpr_log(GPR_INFO, "[WRR %p] Destroying Round Robin policy", this);
|
708
719
|
}
|
709
720
|
CHECK(endpoint_list_ == nullptr);
|
@@ -711,7 +722,7 @@ WeightedRoundRobin::~WeightedRoundRobin() {
|
|
711
722
|
}
|
712
723
|
|
713
724
|
void WeightedRoundRobin::ShutdownLocked() {
|
714
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
725
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
715
726
|
gpr_log(GPR_INFO, "[WRR %p] Shutting down", this);
|
716
727
|
}
|
717
728
|
shutdown_ = true;
|
@@ -731,7 +742,7 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) {
|
|
731
742
|
config_ = args.config.TakeAsSubclass<WeightedRoundRobinConfig>();
|
732
743
|
std::shared_ptr<EndpointAddressesIterator> addresses;
|
733
744
|
if (args.addresses.ok()) {
|
734
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
745
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
735
746
|
gpr_log(GPR_INFO, "[WRR %p] received update", this);
|
736
747
|
}
|
737
748
|
// Weed out duplicate endpoints. Also sort the endpoints so that if
|
@@ -759,7 +770,7 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) {
|
|
759
770
|
std::make_shared<EndpointAddressesListIterator>(EndpointAddressesList(
|
760
771
|
ordered_addresses.begin(), ordered_addresses.end()));
|
761
772
|
} else {
|
762
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
773
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
763
774
|
gpr_log(GPR_INFO, "[WRR %p] received update with address error: %s", this,
|
764
775
|
args.addresses.status().ToString().c_str());
|
765
776
|
}
|
@@ -768,7 +779,7 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) {
|
|
768
779
|
if (endpoint_list_ != nullptr) return args.addresses.status();
|
769
780
|
}
|
770
781
|
// Create new endpoint list, replacing the previous pending list, if any.
|
771
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
782
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb) &&
|
772
783
|
latest_pending_endpoint_list_ != nullptr) {
|
773
784
|
gpr_log(GPR_INFO, "[WRR %p] replacing previous pending endpoint list %p",
|
774
785
|
this, latest_pending_endpoint_list_.get());
|
@@ -779,7 +790,7 @@ absl::Status WeightedRoundRobin::UpdateLocked(UpdateArgs args) {
|
|
779
790
|
// If the new list is empty, immediately promote it to
|
780
791
|
// endpoint_list_ and report TRANSIENT_FAILURE.
|
781
792
|
if (latest_pending_endpoint_list_->size() == 0) {
|
782
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
793
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb) &&
|
783
794
|
endpoint_list_ != nullptr) {
|
784
795
|
gpr_log(GPR_INFO, "[WRR %p] replacing previous endpoint list %p", this,
|
785
796
|
endpoint_list_.get());
|
@@ -862,7 +873,7 @@ void WeightedRoundRobin::WrrEndpointList::WrrEndpoint::OnStateUpdate(
|
|
862
873
|
grpc_connectivity_state new_state, const absl::Status& status) {
|
863
874
|
auto* wrr_endpoint_list = endpoint_list<WrrEndpointList>();
|
864
875
|
auto* wrr = policy<WeightedRoundRobin>();
|
865
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
876
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
866
877
|
gpr_log(GPR_INFO,
|
867
878
|
"[WRR %p] connectivity changed for child %p, endpoint_list %p "
|
868
879
|
"(index %" PRIuPTR " of %" PRIuPTR
|
@@ -872,7 +883,7 @@ void WeightedRoundRobin::WrrEndpointList::WrrEndpoint::OnStateUpdate(
|
|
872
883
|
ConnectivityStateName(new_state), status.ToString().c_str());
|
873
884
|
}
|
874
885
|
if (new_state == GRPC_CHANNEL_IDLE) {
|
875
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
886
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
876
887
|
gpr_log(GPR_INFO,
|
877
888
|
"[WRR %p] child %p reported IDLE; requesting connection", wrr,
|
878
889
|
this);
|
@@ -953,7 +964,7 @@ void WeightedRoundRobin::WrrEndpointList::
|
|
953
964
|
(wrr->endpoint_list_->num_ready_ == 0 ||
|
954
965
|
(num_ready_ > 0 && AllEndpointsSeenInitialState()) ||
|
955
966
|
num_transient_failure_ == size())) {
|
956
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
967
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
957
968
|
const std::string old_counters_string =
|
958
969
|
wrr->endpoint_list_ != nullptr ? wrr->endpoint_list_->CountersString()
|
959
970
|
: "";
|
@@ -971,7 +982,7 @@ void WeightedRoundRobin::WrrEndpointList::
|
|
971
982
|
// 2) ANY child is CONNECTING => policy is CONNECTING.
|
972
983
|
// 3) ALL children are TRANSIENT_FAILURE => policy is TRANSIENT_FAILURE.
|
973
984
|
if (num_ready_ > 0) {
|
974
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
985
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
975
986
|
gpr_log(GPR_INFO, "[WRR %p] reporting READY with endpoint list %p", wrr,
|
976
987
|
this);
|
977
988
|
}
|
@@ -979,7 +990,7 @@ void WeightedRoundRobin::WrrEndpointList::
|
|
979
990
|
GRPC_CHANNEL_READY, absl::Status(),
|
980
991
|
MakeRefCounted<Picker>(wrr->RefAsSubclass<WeightedRoundRobin>(), this));
|
981
992
|
} else if (num_connecting_ > 0) {
|
982
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
993
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
983
994
|
gpr_log(GPR_INFO, "[WRR %p] reporting CONNECTING with endpoint list %p",
|
984
995
|
wrr, this);
|
985
996
|
}
|
@@ -987,7 +998,7 @@ void WeightedRoundRobin::WrrEndpointList::
|
|
987
998
|
GRPC_CHANNEL_CONNECTING, absl::Status(),
|
988
999
|
MakeRefCounted<QueuePicker>(nullptr));
|
989
1000
|
} else if (num_transient_failure_ == size()) {
|
990
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
1001
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_round_robin_lb)) {
|
991
1002
|
gpr_log(GPR_INFO,
|
992
1003
|
"[WRR %p] reporting TRANSIENT_FAILURE with endpoint list %p: %s",
|
993
1004
|
wrr, this, status_for_tf.ToString().c_str());
|
@@ -54,9 +54,6 @@
|
|
54
54
|
#include "src/core/lib/gprpp/work_serializer.h"
|
55
55
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
56
56
|
#include "src/core/lib/iomgr/pollset_set.h"
|
57
|
-
#include "src/core/lib/json/json.h"
|
58
|
-
#include "src/core/lib/json/json_args.h"
|
59
|
-
#include "src/core/lib/json/json_object_loader.h"
|
60
57
|
#include "src/core/lib/transport/connectivity_state.h"
|
61
58
|
#include "src/core/load_balancing/address_filtering.h"
|
62
59
|
#include "src/core/load_balancing/child_policy_handler.h"
|
@@ -65,13 +62,14 @@
|
|
65
62
|
#include "src/core/load_balancing/lb_policy_factory.h"
|
66
63
|
#include "src/core/load_balancing/lb_policy_registry.h"
|
67
64
|
#include "src/core/resolver/endpoint_addresses.h"
|
65
|
+
#include "src/core/util/json/json.h"
|
66
|
+
#include "src/core/util/json/json_args.h"
|
67
|
+
#include "src/core/util/json/json_object_loader.h"
|
68
68
|
|
69
69
|
// IWYU pragma: no_include <type_traits>
|
70
70
|
|
71
71
|
namespace grpc_core {
|
72
72
|
|
73
|
-
TraceFlag grpc_lb_weighted_target_trace(false, "weighted_target_lb");
|
74
|
-
|
75
73
|
namespace {
|
76
74
|
|
77
75
|
using ::grpc_event_engine::experimental::EventEngine;
|
@@ -286,13 +284,13 @@ WeightedTargetLb::PickResult WeightedTargetLb::WeightedPicker::Pick(
|
|
286
284
|
|
287
285
|
WeightedTargetLb::WeightedTargetLb(Args args)
|
288
286
|
: LoadBalancingPolicy(std::move(args)) {
|
289
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
287
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
290
288
|
gpr_log(GPR_INFO, "[weighted_target_lb %p] created", this);
|
291
289
|
}
|
292
290
|
}
|
293
291
|
|
294
292
|
WeightedTargetLb::~WeightedTargetLb() {
|
295
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
293
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
296
294
|
gpr_log(GPR_INFO,
|
297
295
|
"[weighted_target_lb %p] destroying weighted_target LB policy",
|
298
296
|
this);
|
@@ -300,7 +298,7 @@ WeightedTargetLb::~WeightedTargetLb() {
|
|
300
298
|
}
|
301
299
|
|
302
300
|
void WeightedTargetLb::ShutdownLocked() {
|
303
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
301
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
304
302
|
gpr_log(GPR_INFO, "[weighted_target_lb %p] shutting down", this);
|
305
303
|
}
|
306
304
|
shutting_down_ = true;
|
@@ -313,7 +311,7 @@ void WeightedTargetLb::ResetBackoffLocked() {
|
|
313
311
|
|
314
312
|
absl::Status WeightedTargetLb::UpdateLocked(UpdateArgs args) {
|
315
313
|
if (shutting_down_) return absl::OkStatus();
|
316
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
314
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
317
315
|
gpr_log(GPR_INFO, "[weighted_target_lb %p] Received update", this);
|
318
316
|
}
|
319
317
|
update_in_progress_ = true;
|
@@ -385,7 +383,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
385
383
|
// all children. This avoids unnecessary picker churn while an update
|
386
384
|
// is being propagated to our children.
|
387
385
|
if (update_in_progress_) return;
|
388
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
386
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
389
387
|
gpr_log(GPR_INFO,
|
390
388
|
"[weighted_target_lb %p] scanning children to determine "
|
391
389
|
"connectivity state",
|
@@ -412,7 +410,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
412
410
|
continue;
|
413
411
|
}
|
414
412
|
auto child_picker = child->picker();
|
415
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
413
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
416
414
|
gpr_log(GPR_INFO,
|
417
415
|
"[weighted_target_lb %p] child=%s state=%s weight=%u picker=%p",
|
418
416
|
this, child_name.c_str(),
|
@@ -455,7 +453,7 @@ void WeightedTargetLb::UpdateStateLocked() {
|
|
455
453
|
} else {
|
456
454
|
connectivity_state = GRPC_CHANNEL_TRANSIENT_FAILURE;
|
457
455
|
}
|
458
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
456
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
459
457
|
gpr_log(GPR_INFO, "[weighted_target_lb %p] connectivity changed to %s",
|
460
458
|
this, ConnectivityStateName(connectivity_state));
|
461
459
|
}
|
@@ -499,7 +497,7 @@ WeightedTargetLb::WeightedChild::DelayedRemovalTimer::DelayedRemovalTimer(
|
|
499
497
|
|
500
498
|
void WeightedTargetLb::WeightedChild::DelayedRemovalTimer::Orphan() {
|
501
499
|
if (timer_handle_.has_value()) {
|
502
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
500
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
503
501
|
gpr_log(GPR_INFO,
|
504
502
|
"[weighted_target_lb %p] WeightedChild %p %s: cancelling "
|
505
503
|
"delayed removal timer",
|
@@ -530,14 +528,14 @@ WeightedTargetLb::WeightedChild::WeightedChild(
|
|
530
528
|
: weighted_target_policy_(std::move(weighted_target_policy)),
|
531
529
|
name_(name),
|
532
530
|
picker_(MakeRefCounted<QueuePicker>(nullptr)) {
|
533
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
531
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
534
532
|
gpr_log(GPR_INFO, "[weighted_target_lb %p] created WeightedChild %p for %s",
|
535
533
|
weighted_target_policy_.get(), this, name_.c_str());
|
536
534
|
}
|
537
535
|
}
|
538
536
|
|
539
537
|
WeightedTargetLb::WeightedChild::~WeightedChild() {
|
540
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
538
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
541
539
|
gpr_log(GPR_INFO,
|
542
540
|
"[weighted_target_lb %p] WeightedChild %p %s: destroying child",
|
543
541
|
weighted_target_policy_.get(), this, name_.c_str());
|
@@ -546,7 +544,7 @@ WeightedTargetLb::WeightedChild::~WeightedChild() {
|
|
546
544
|
}
|
547
545
|
|
548
546
|
void WeightedTargetLb::WeightedChild::Orphan() {
|
549
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
547
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
550
548
|
gpr_log(GPR_INFO,
|
551
549
|
"[weighted_target_lb %p] WeightedChild %p %s: shutting down child",
|
552
550
|
weighted_target_policy_.get(), this, name_.c_str());
|
@@ -574,8 +572,8 @@ WeightedTargetLb::WeightedChild::CreateChildPolicyLocked(
|
|
574
572
|
std::make_unique<Helper>(this->Ref(DEBUG_LOCATION, "Helper"));
|
575
573
|
OrphanablePtr<LoadBalancingPolicy> lb_policy =
|
576
574
|
MakeOrphanable<ChildPolicyHandler>(std::move(lb_policy_args),
|
577
|
-
&
|
578
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
575
|
+
&weighted_target_lb_trace);
|
576
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
579
577
|
gpr_log(GPR_INFO,
|
580
578
|
"[weighted_target_lb %p] WeightedChild %p %s: Created new child "
|
581
579
|
"policy handler %p",
|
@@ -597,15 +595,14 @@ absl::Status WeightedTargetLb::WeightedChild::UpdateLocked(
|
|
597
595
|
const std::string& resolution_note, ChannelArgs args) {
|
598
596
|
if (weighted_target_policy_->shutting_down_) return absl::OkStatus();
|
599
597
|
// Update child weight.
|
600
|
-
if (weight_ != config.weight &&
|
601
|
-
GRPC_TRACE_FLAG_ENABLED(grpc_lb_weighted_target_trace)) {
|
598
|
+
if (weight_ != config.weight && GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
602
599
|
gpr_log(GPR_INFO, "[weighted_target_lb %p] WeightedChild %p %s: weight=%u",
|
603
600
|
weighted_target_policy_.get(), this, name_.c_str(), config.weight);
|
604
601
|
}
|
605
602
|
weight_ = config.weight;
|
606
603
|
// Reactivate if needed.
|
607
604
|
if (delayed_removal_timer_ != nullptr) {
|
608
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
605
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
609
606
|
gpr_log(GPR_INFO,
|
610
607
|
"[weighted_target_lb %p] WeightedChild %p %s: reactivating",
|
611
608
|
weighted_target_policy_.get(), this, name_.c_str());
|
@@ -624,7 +621,7 @@ absl::Status WeightedTargetLb::WeightedChild::UpdateLocked(
|
|
624
621
|
update_args.resolution_note = resolution_note;
|
625
622
|
update_args.args = std::move(args);
|
626
623
|
// Update the policy.
|
627
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
624
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
628
625
|
gpr_log(GPR_INFO,
|
629
626
|
"[weighted_target_lb %p] WeightedChild %p %s: Updating child "
|
630
627
|
"policy handler %p",
|
@@ -643,7 +640,7 @@ void WeightedTargetLb::WeightedChild::OnConnectivityStateUpdateLocked(
|
|
643
640
|
RefCountedPtr<SubchannelPicker> picker) {
|
644
641
|
// Cache the picker in the WeightedChild.
|
645
642
|
picker_ = std::move(picker);
|
646
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
643
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
647
644
|
gpr_log(GPR_INFO,
|
648
645
|
"[weighted_target_lb %p] WeightedChild %p %s: connectivity "
|
649
646
|
"state update: state=%s (%s) picker=%p",
|
@@ -667,7 +664,7 @@ void WeightedTargetLb::WeightedChild::OnConnectivityStateUpdateLocked(
|
|
667
664
|
void WeightedTargetLb::WeightedChild::DeactivateLocked() {
|
668
665
|
// If already deactivated, don't do that again.
|
669
666
|
if (weight_ == 0) return;
|
670
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
667
|
+
if (GRPC_TRACE_FLAG_ENABLED(weighted_target_lb)) {
|
671
668
|
gpr_log(GPR_INFO,
|
672
669
|
"[weighted_target_lb %p] WeightedChild %p %s: deactivating",
|
673
670
|
weighted_target_policy_.get(), this, name_.c_str());
|