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
@@ -25,6 +25,7 @@
|
|
25
25
|
#include <limits.h>
|
26
26
|
|
27
27
|
#include "absl/log/check.h"
|
28
|
+
#include "absl/log/log.h"
|
28
29
|
|
29
30
|
#include <grpc/slice_buffer.h>
|
30
31
|
#include <grpc/support/alloc.h>
|
@@ -33,8 +34,6 @@
|
|
33
34
|
#include <grpc/support/string_util.h>
|
34
35
|
|
35
36
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
36
|
-
#include "src/core/lib/gpr/string.h"
|
37
|
-
#include "src/core/lib/gpr/useful.h"
|
38
37
|
#include "src/core/lib/gprpp/crash.h"
|
39
38
|
#include "src/core/lib/iomgr/iocp_windows.h"
|
40
39
|
#include "src/core/lib/iomgr/sockaddr.h"
|
@@ -45,6 +44,8 @@
|
|
45
44
|
#include "src/core/lib/iomgr/timer.h"
|
46
45
|
#include "src/core/lib/slice/slice_internal.h"
|
47
46
|
#include "src/core/lib/slice/slice_string_helpers.h"
|
47
|
+
#include "src/core/util/string.h"
|
48
|
+
#include "src/core/util/useful.h"
|
48
49
|
|
49
50
|
#if defined(__MSYS__) && defined(GPR_ARCH_64)
|
50
51
|
// Nasty workaround for nasty bug when using the 64 bits msys compiler
|
@@ -54,8 +55,6 @@
|
|
54
55
|
#define GRPC_FIONBIO FIONBIO
|
55
56
|
#endif
|
56
57
|
|
57
|
-
extern grpc_core::TraceFlag grpc_tcp_trace;
|
58
|
-
|
59
58
|
grpc_error_handle grpc_tcp_set_non_block(SOCKET sock) {
|
60
59
|
int status;
|
61
60
|
uint32_t param = 1;
|
@@ -124,7 +123,6 @@ typedef struct grpc_tcp {
|
|
124
123
|
// to protect ourselves when requesting a shutdown.
|
125
124
|
gpr_mu mu;
|
126
125
|
int shutting_down;
|
127
|
-
grpc_error_handle shutdown_error;
|
128
126
|
|
129
127
|
std::string peer_string;
|
130
128
|
std::string local_address;
|
@@ -142,7 +140,7 @@ static void tcp_free(grpc_tcp* tcp) {
|
|
142
140
|
#define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__)
|
143
141
|
static void tcp_unref(grpc_tcp* tcp, const char* reason, const char* file,
|
144
142
|
int line) {
|
145
|
-
if (
|
143
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
|
146
144
|
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
147
145
|
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
148
146
|
"TCP unref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
|
@@ -155,7 +153,7 @@ static void tcp_unref(grpc_tcp* tcp, const char* reason, const char* file,
|
|
155
153
|
|
156
154
|
static void tcp_ref(grpc_tcp* tcp, const char* reason, const char* file,
|
157
155
|
int line) {
|
158
|
-
if (
|
156
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
|
159
157
|
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
160
158
|
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
161
159
|
"TCP ref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
|
@@ -182,7 +180,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
|
|
182
180
|
grpc_winsocket* socket = tcp->socket;
|
183
181
|
grpc_winsocket_callback_info* info = &socket->read_info;
|
184
182
|
|
185
|
-
if (
|
183
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
|
186
184
|
gpr_log(GPR_INFO, "TCP:%p on_read", tcp);
|
187
185
|
}
|
188
186
|
|
@@ -203,27 +201,24 @@ static void on_read(void* tcpp, grpc_error_handle error) {
|
|
203
201
|
}
|
204
202
|
CHECK((size_t)info->bytes_transferred == tcp->read_slices->length);
|
205
203
|
|
206
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
207
|
-
gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
|
204
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp) && ABSL_VLOG_IS_ON(2)) {
|
208
205
|
size_t i;
|
209
206
|
for (i = 0; i < tcp->read_slices->count; i++) {
|
210
207
|
char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
|
211
208
|
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
212
|
-
|
213
|
-
|
209
|
+
VLOG(2) << "READ " << tcp << " (peer=" << tcp->peer_string
|
210
|
+
<< "): " << dump;
|
214
211
|
gpr_free(dump);
|
215
212
|
}
|
216
213
|
}
|
217
214
|
} else {
|
218
|
-
if (
|
215
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
|
219
216
|
gpr_log(GPR_INFO, "TCP:%p unref read_slice", tcp);
|
220
217
|
}
|
221
218
|
grpc_slice_buffer_reset_and_unref(tcp->read_slices);
|
222
219
|
error = grpc_error_set_int(
|
223
|
-
tcp->shutting_down
|
224
|
-
|
225
|
-
&tcp->shutdown_error, 1)
|
226
|
-
: GRPC_ERROR_CREATE("End of TCP stream"),
|
220
|
+
tcp->shutting_down ? GRPC_ERROR_CREATE("TCP stream shutting down")
|
221
|
+
: GRPC_ERROR_CREATE("End of TCP stream"),
|
227
222
|
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
|
228
223
|
}
|
229
224
|
}
|
@@ -248,17 +243,16 @@ static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
|
|
248
243
|
WSABUF buffers[MAX_WSABUF_COUNT];
|
249
244
|
size_t i;
|
250
245
|
|
251
|
-
if (
|
246
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
|
252
247
|
gpr_log(GPR_INFO, "TCP:%p win_read", tcp);
|
253
248
|
}
|
254
249
|
|
255
250
|
if (tcp->shutting_down) {
|
256
251
|
grpc_core::ExecCtx::Run(
|
257
252
|
DEBUG_LOCATION, cb,
|
258
|
-
grpc_error_set_int(
|
259
|
-
|
260
|
-
|
261
|
-
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE));
|
253
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("TCP socket is shutting down"),
|
254
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
255
|
+
GRPC_STATUS_UNAVAILABLE));
|
262
256
|
return;
|
263
257
|
}
|
264
258
|
|
@@ -320,7 +314,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
|
|
320
314
|
grpc_winsocket_callback_info* info = &handle->write_info;
|
321
315
|
grpc_closure* cb;
|
322
316
|
|
323
|
-
if (
|
317
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
|
324
318
|
gpr_log(GPR_INFO, "TCP:%p on_write", tcp);
|
325
319
|
}
|
326
320
|
|
@@ -356,14 +350,13 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
|
356
350
|
WSABUF* buffers = local_buffers;
|
357
351
|
size_t len, async_buffers_offset = 0;
|
358
352
|
|
359
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
360
|
-
gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
|
353
|
+
if (GRPC_TRACE_FLAG_ENABLED(tcp) && ABSL_VLOG_IS_ON(2)) {
|
361
354
|
size_t i;
|
362
355
|
for (i = 0; i < slices->count; i++) {
|
363
356
|
char* data =
|
364
357
|
grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
365
|
-
|
366
|
-
data
|
358
|
+
VLOG(2) << "WRITE " << tcp << " (peer=" << tcp->peer_string
|
359
|
+
<< "): " << data;
|
367
360
|
gpr_free(data);
|
368
361
|
}
|
369
362
|
}
|
@@ -371,10 +364,9 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
|
371
364
|
if (tcp->shutting_down) {
|
372
365
|
grpc_core::ExecCtx::Run(
|
373
366
|
DEBUG_LOCATION, cb,
|
374
|
-
grpc_error_set_int(
|
375
|
-
|
376
|
-
|
377
|
-
grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE));
|
367
|
+
grpc_error_set_int(GRPC_ERROR_CREATE("TCP socket is shutting down"),
|
368
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
369
|
+
GRPC_STATUS_UNAVAILABLE));
|
378
370
|
return;
|
379
371
|
}
|
380
372
|
|
@@ -479,21 +471,14 @@ static void win_delete_from_pollset_set(grpc_endpoint* /* ep */,
|
|
479
471
|
// we're not going to protect against these. However the IO Completion Port
|
480
472
|
// callback will happen from another thread, so we need to protect against
|
481
473
|
// concurrent access of the data structure in that regard.
|
482
|
-
static void
|
474
|
+
static void win_destroy(grpc_endpoint* ep) {
|
483
475
|
grpc_tcp* tcp = (grpc_tcp*)ep;
|
484
476
|
gpr_mu_lock(&tcp->mu);
|
485
477
|
// At that point, what may happen is that we're already inside the IOCP
|
486
478
|
// callback. See the comments in on_read and on_write.
|
487
|
-
|
488
|
-
tcp->shutting_down = 1;
|
489
|
-
tcp->shutdown_error = why;
|
490
|
-
}
|
479
|
+
tcp->shutting_down = 1;
|
491
480
|
grpc_winsocket_shutdown(tcp->socket);
|
492
481
|
gpr_mu_unlock(&tcp->mu);
|
493
|
-
}
|
494
|
-
|
495
|
-
static void win_destroy(grpc_endpoint* ep) {
|
496
|
-
grpc_tcp* tcp = (grpc_tcp*)ep;
|
497
482
|
grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
|
498
483
|
TCP_UNREF(tcp, "destroy");
|
499
484
|
}
|
@@ -517,7 +502,6 @@ static grpc_endpoint_vtable vtable = {win_read,
|
|
517
502
|
win_add_to_pollset,
|
518
503
|
win_add_to_pollset_set,
|
519
504
|
win_delete_from_pollset_set,
|
520
|
-
win_shutdown,
|
521
505
|
win_destroy,
|
522
506
|
win_get_peer,
|
523
507
|
win_get_local_address,
|
@@ -31,8 +31,6 @@
|
|
31
31
|
#include <grpc/support/sync.h>
|
32
32
|
|
33
33
|
#include "src/core/lib/debug/trace.h"
|
34
|
-
#include "src/core/lib/gpr/spinlock.h"
|
35
|
-
#include "src/core/lib/gpr/useful.h"
|
36
34
|
#include "src/core/lib/gprpp/crash.h"
|
37
35
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
38
36
|
#include "src/core/lib/gprpp/time.h"
|
@@ -41,6 +39,8 @@
|
|
41
39
|
#include "src/core/lib/iomgr/port.h"
|
42
40
|
#include "src/core/lib/iomgr/timer.h"
|
43
41
|
#include "src/core/lib/iomgr/timer_heap.h"
|
42
|
+
#include "src/core/util/spinlock.h"
|
43
|
+
#include "src/core/util/useful.h"
|
44
44
|
|
45
45
|
#define INVALID_HEAP_INDEX 0xffffffffu
|
46
46
|
|
@@ -48,9 +48,6 @@
|
|
48
48
|
#define MIN_QUEUE_WINDOW_DURATION 0.01
|
49
49
|
#define MAX_QUEUE_WINDOW_DURATION 1.0
|
50
50
|
|
51
|
-
grpc_core::TraceFlag grpc_timer_trace(false, "timer");
|
52
|
-
grpc_core::TraceFlag grpc_timer_check_trace(false, "timer_check");
|
53
|
-
|
54
51
|
// A "timer shard". Contains a 'heap' and a 'list' of timers. All timers with
|
55
52
|
// deadlines earlier than 'queue_deadline_cap' are maintained in the heap and
|
56
53
|
// others are maintained in the list (unordered). This helps to keep the number
|
@@ -337,7 +334,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
|
|
337
334
|
timer->hash_table_next = nullptr;
|
338
335
|
#endif
|
339
336
|
|
340
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
337
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer)) {
|
341
338
|
gpr_log(GPR_DEBUG, "TIMER %p: SET %" PRId64 " now %" PRId64 " call %p[%p]",
|
342
339
|
timer, deadline.milliseconds_after_process_epoch(),
|
343
340
|
grpc_core::Timestamp::Now().milliseconds_after_process_epoch(),
|
@@ -373,7 +370,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
|
|
373
370
|
timer->heap_index = INVALID_HEAP_INDEX;
|
374
371
|
list_join(&shard->list, timer);
|
375
372
|
}
|
376
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
373
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer)) {
|
377
374
|
gpr_log(GPR_DEBUG,
|
378
375
|
" .. add to shard %d with queue_deadline_cap=%" PRId64
|
379
376
|
" => is_first_timer=%s",
|
@@ -396,7 +393,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
|
|
396
393
|
// grpc_timer_check.
|
397
394
|
if (is_first_timer) {
|
398
395
|
gpr_mu_lock(&g_shared_mutables.mu);
|
399
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
396
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer)) {
|
400
397
|
gpr_log(GPR_DEBUG, " .. old shard min_deadline=%" PRId64,
|
401
398
|
shard->min_deadline.milliseconds_after_process_epoch());
|
402
399
|
}
|
@@ -438,7 +435,7 @@ static void timer_cancel(grpc_timer* timer) {
|
|
438
435
|
|
439
436
|
timer_shard* shard = &g_shards[grpc_core::HashPointer(timer, g_num_shards)];
|
440
437
|
gpr_mu_lock(&shard->mu);
|
441
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
438
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer)) {
|
442
439
|
gpr_log(GPR_DEBUG, "TIMER %p: CANCEL pending=%s", timer,
|
443
440
|
timer->pending ? "true" : "false");
|
444
441
|
}
|
@@ -479,7 +476,7 @@ static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
|
|
479
476
|
std::max(now, shard->queue_deadline_cap) +
|
480
477
|
grpc_core::Duration::FromSecondsAsDouble(deadline_delta);
|
481
478
|
|
482
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
479
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
483
480
|
gpr_log(GPR_DEBUG, " .. shard[%d]->queue_deadline_cap --> %" PRId64,
|
484
481
|
static_cast<int>(shard - g_shards),
|
485
482
|
shard->queue_deadline_cap.milliseconds_after_process_epoch());
|
@@ -491,7 +488,7 @@ static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
|
|
491
488
|
timer->deadline);
|
492
489
|
|
493
490
|
if (timer_deadline < shard->queue_deadline_cap) {
|
494
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
491
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
495
492
|
gpr_log(GPR_DEBUG, " .. add timer with deadline %" PRId64 " to heap",
|
496
493
|
timer_deadline.milliseconds_after_process_epoch());
|
497
494
|
}
|
@@ -508,7 +505,7 @@ static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
|
|
508
505
|
static grpc_timer* pop_one(timer_shard* shard, grpc_core::Timestamp now) {
|
509
506
|
grpc_timer* timer;
|
510
507
|
for (;;) {
|
511
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
508
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
512
509
|
gpr_log(GPR_DEBUG, " .. shard[%d]: heap_empty=%s",
|
513
510
|
static_cast<int>(shard - g_shards),
|
514
511
|
grpc_timer_heap_is_empty(&shard->heap) ? "true" : "false");
|
@@ -521,14 +518,14 @@ static grpc_timer* pop_one(timer_shard* shard, grpc_core::Timestamp now) {
|
|
521
518
|
auto timer_deadline =
|
522
519
|
grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
|
523
520
|
timer->deadline);
|
524
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
521
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
525
522
|
gpr_log(GPR_DEBUG,
|
526
523
|
" .. check top timer deadline=%" PRId64 " now=%" PRId64,
|
527
524
|
timer_deadline.milliseconds_after_process_epoch(),
|
528
525
|
now.milliseconds_after_process_epoch());
|
529
526
|
}
|
530
527
|
if (timer_deadline > now) return nullptr;
|
531
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
528
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer)) {
|
532
529
|
gpr_log(GPR_DEBUG, "TIMER %p: FIRE %" PRId64 "ms late", timer,
|
533
530
|
(now - timer_deadline).millis());
|
534
531
|
}
|
@@ -552,7 +549,7 @@ static size_t pop_timers(timer_shard* shard, grpc_core::Timestamp now,
|
|
552
549
|
}
|
553
550
|
*new_min_deadline = compute_min_deadline(shard);
|
554
551
|
gpr_mu_unlock(&shard->mu);
|
555
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
552
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
556
553
|
gpr_log(GPR_DEBUG, " .. shard[%d] popped %" PRIdPTR,
|
557
554
|
static_cast<int>(shard - g_shards), n);
|
558
555
|
}
|
@@ -591,7 +588,7 @@ static grpc_timer_check_result run_some_expired_timers(
|
|
591
588
|
gpr_mu_lock(&g_shared_mutables.mu);
|
592
589
|
result = GRPC_TIMERS_CHECKED_AND_EMPTY;
|
593
590
|
|
594
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
591
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
595
592
|
gpr_log(
|
596
593
|
GPR_DEBUG, " .. shard[%d]->min_deadline = %" PRId64,
|
597
594
|
static_cast<int>(g_shard_queue[0] - g_shards),
|
@@ -610,7 +607,7 @@ static grpc_timer_check_result run_some_expired_timers(
|
|
610
607
|
result = GRPC_TIMERS_FIRED;
|
611
608
|
}
|
612
609
|
|
613
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
610
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
614
611
|
gpr_log(
|
615
612
|
GPR_DEBUG,
|
616
613
|
" .. result --> %d"
|
@@ -670,7 +667,7 @@ static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
|
|
670
667
|
if (next != nullptr) {
|
671
668
|
*next = std::min(*next, min_timer);
|
672
669
|
}
|
673
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
670
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
674
671
|
gpr_log(GPR_DEBUG, "TIMER CHECK SKIP: now=%" PRId64 " min_timer=%" PRId64,
|
675
672
|
now.milliseconds_after_process_epoch(),
|
676
673
|
min_timer.milliseconds_after_process_epoch());
|
@@ -684,7 +681,7 @@ static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
|
|
684
681
|
: GRPC_ERROR_CREATE("Shutting down timer system");
|
685
682
|
|
686
683
|
// tracing
|
687
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
684
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
688
685
|
std::string next_str;
|
689
686
|
if (next == nullptr) {
|
690
687
|
next_str = "NULL";
|
@@ -712,7 +709,7 @@ static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
|
|
712
709
|
grpc_timer_check_result r =
|
713
710
|
run_some_expired_timers(now, next, shutdown_error);
|
714
711
|
// tracing
|
715
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
712
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
716
713
|
std::string next_str;
|
717
714
|
if (next == nullptr) {
|
718
715
|
next_str = "NULL";
|
@@ -23,8 +23,8 @@
|
|
23
23
|
#include <grpc/support/alloc.h>
|
24
24
|
#include <grpc/support/port_platform.h>
|
25
25
|
|
26
|
-
#include "src/core/lib/gpr/useful.h"
|
27
26
|
#include "src/core/lib/iomgr/port.h"
|
27
|
+
#include "src/core/util/useful.h"
|
28
28
|
|
29
29
|
// Adjusts a heap so as to move a hole at position i closer to the root,
|
30
30
|
// until a suitable position is found for element t. Then, copies t into that
|
@@ -21,6 +21,7 @@
|
|
21
21
|
#include <inttypes.h>
|
22
22
|
|
23
23
|
#include "absl/log/check.h"
|
24
|
+
#include "absl/log/log.h"
|
24
25
|
|
25
26
|
#include <grpc/support/alloc.h>
|
26
27
|
#include <grpc/support/log.h>
|
@@ -36,8 +37,6 @@ struct completed_thread {
|
|
36
37
|
completed_thread* next;
|
37
38
|
};
|
38
39
|
|
39
|
-
extern grpc_core::TraceFlag grpc_timer_check_trace;
|
40
|
-
|
41
40
|
// global mutex
|
42
41
|
static gpr_mu g_mu;
|
43
42
|
// are we multi-threaded
|
@@ -88,9 +87,7 @@ static void start_timer_thread_and_unlock(void) {
|
|
88
87
|
++g_waiter_count;
|
89
88
|
++g_thread_count;
|
90
89
|
gpr_mu_unlock(&g_mu);
|
91
|
-
|
92
|
-
gpr_log(GPR_INFO, "Spawn timer thread");
|
93
|
-
}
|
90
|
+
GRPC_TRACE_LOG(timer_check, INFO) << "Spawn timer thread";
|
94
91
|
completed_thread* ct =
|
95
92
|
static_cast<completed_thread*>(gpr_malloc(sizeof(*ct)));
|
96
93
|
ct->thd = grpc_core::Thread("grpc_global_timer", timer_thread, ct);
|
@@ -124,17 +121,13 @@ static void run_some_timers() {
|
|
124
121
|
// if there's no thread waiting with a timeout, kick an existing untimed
|
125
122
|
// waiter so that the next deadline is not missed
|
126
123
|
if (!g_has_timed_waiter) {
|
127
|
-
|
128
|
-
gpr_log(GPR_INFO, "kick untimed waiter");
|
129
|
-
}
|
124
|
+
GRPC_TRACE_LOG(timer_check, INFO) << "kick untimed waiter";
|
130
125
|
gpr_cv_signal(&g_cv_wait);
|
131
126
|
}
|
132
127
|
gpr_mu_unlock(&g_mu);
|
133
128
|
}
|
134
129
|
// without our lock, flush the exec_ctx
|
135
|
-
|
136
|
-
gpr_log(GPR_INFO, "flush exec_ctx");
|
137
|
-
}
|
130
|
+
GRPC_TRACE_LOG(timer_check, INFO) << "flush exec_ctx";
|
138
131
|
grpc_core::ExecCtx::Get()->Flush();
|
139
132
|
gpr_mu_lock(&g_mu);
|
140
133
|
// garbage collect any threads that are dead
|
@@ -187,7 +180,7 @@ static bool wait_until(grpc_core::Timestamp next) {
|
|
187
180
|
g_has_timed_waiter = true;
|
188
181
|
g_timed_waiter_deadline = next;
|
189
182
|
|
190
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
183
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
191
184
|
grpc_core::Duration wait_time = next - grpc_core::Timestamp::Now();
|
192
185
|
gpr_log(GPR_INFO, "sleep for a %" PRId64 " milliseconds",
|
193
186
|
wait_time.millis());
|
@@ -197,14 +190,14 @@ static bool wait_until(grpc_core::Timestamp next) {
|
|
197
190
|
}
|
198
191
|
}
|
199
192
|
|
200
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
193
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check) &&
|
201
194
|
next == grpc_core::Timestamp::InfFuture()) {
|
202
|
-
|
195
|
+
LOG(INFO) << "sleep until kicked";
|
203
196
|
}
|
204
197
|
|
205
198
|
gpr_cv_wait(&g_cv_wait, &g_mu, next.as_timespec(GPR_CLOCK_MONOTONIC));
|
206
199
|
|
207
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
200
|
+
if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
|
208
201
|
gpr_log(GPR_INFO, "wait ended: was_timed:%d kicked:%d",
|
209
202
|
my_timed_waiter_generation == g_timed_waiter_generation,
|
210
203
|
g_kicked);
|
@@ -250,9 +243,8 @@ static void timer_main_loop() {
|
|
250
243
|
|
251
244
|
// Consequently, we can just sleep forever here and be happy at some
|
252
245
|
// saved wakeup cycles.
|
253
|
-
|
254
|
-
|
255
|
-
}
|
246
|
+
GRPC_TRACE_LOG(timer_check, INFO)
|
247
|
+
<< "timers not checked: expect another thread to";
|
256
248
|
next = grpc_core::Timestamp::InfFuture();
|
257
249
|
ABSL_FALLTHROUGH_INTENDED;
|
258
250
|
case GRPC_TIMERS_CHECKED_AND_EMPTY:
|
@@ -276,9 +268,7 @@ static void timer_thread_cleanup(completed_thread* ct) {
|
|
276
268
|
ct->next = g_completed_threads;
|
277
269
|
g_completed_threads = ct;
|
278
270
|
gpr_mu_unlock(&g_mu);
|
279
|
-
|
280
|
-
gpr_log(GPR_INFO, "End timer thread");
|
281
|
-
}
|
271
|
+
GRPC_TRACE_LOG(timer_check, INFO) << "End timer thread";
|
282
272
|
}
|
283
273
|
|
284
274
|
static void timer_thread(void* completed_thread_ptr) {
|
@@ -317,20 +307,17 @@ void grpc_timer_manager_init(void) {
|
|
317
307
|
|
318
308
|
static void stop_threads(void) {
|
319
309
|
gpr_mu_lock(&g_mu);
|
320
|
-
|
321
|
-
|
322
|
-
}
|
310
|
+
GRPC_TRACE_LOG(timer_check, INFO)
|
311
|
+
<< "stop timer threads: threaded=" << g_threaded;
|
323
312
|
if (g_threaded) {
|
324
313
|
g_threaded = false;
|
325
314
|
gpr_cv_broadcast(&g_cv_wait);
|
326
|
-
|
327
|
-
|
328
|
-
}
|
315
|
+
GRPC_TRACE_LOG(timer_check, INFO)
|
316
|
+
<< "num timer threads: " << g_thread_count;
|
329
317
|
while (g_thread_count > 0) {
|
330
318
|
gpr_cv_wait(&g_cv_shutdown, &g_mu, gpr_inf_future(GPR_CLOCK_MONOTONIC));
|
331
|
-
|
332
|
-
|
333
|
-
}
|
319
|
+
GRPC_TRACE_LOG(timer_check, INFO)
|
320
|
+
<< "num timer threads: " << g_thread_count;
|
334
321
|
gc_completed_threads();
|
335
322
|
}
|
336
323
|
}
|
@@ -40,11 +40,11 @@
|
|
40
40
|
#include <grpc/support/log.h>
|
41
41
|
|
42
42
|
#include "src/core/lib/address_utils/parse_address.h"
|
43
|
-
#include "src/core/lib/gpr/useful.h"
|
44
43
|
#include "src/core/lib/gprpp/crash.h"
|
45
44
|
#include "src/core/lib/iomgr/sockaddr.h"
|
46
45
|
#include "src/core/lib/iomgr/unix_sockets_posix.h"
|
47
46
|
#include "src/core/lib/transport/error_utils.h"
|
47
|
+
#include "src/core/util/useful.h"
|
48
48
|
|
49
49
|
void grpc_create_socketpair_if_unix(int sv[2]) {
|
50
50
|
#ifdef GPR_WINDOWS
|
data/src/core/lib/iomgr/vsock.cc
CHANGED
@@ -31,10 +31,10 @@
|
|
31
31
|
#include <grpc/support/log.h>
|
32
32
|
|
33
33
|
#include "src/core/lib/address_utils/parse_address.h"
|
34
|
-
#include "src/core/lib/gpr/useful.h"
|
35
34
|
#include "src/core/lib/gprpp/crash.h"
|
36
35
|
#include "src/core/lib/iomgr/sockaddr.h"
|
37
36
|
#include "src/core/lib/transport/error_utils.h"
|
37
|
+
#include "src/core/util/useful.h"
|
38
38
|
|
39
39
|
absl::StatusOr<std::vector<grpc_resolved_address>> grpc_resolve_vsock_address(
|
40
40
|
absl::string_view name) {
|
@@ -26,7 +26,7 @@
|
|
26
26
|
#include <string.h>
|
27
27
|
#include <unistd.h>
|
28
28
|
|
29
|
-
#include
|
29
|
+
#include "absl/log/log.h"
|
30
30
|
|
31
31
|
#include "src/core/lib/gprpp/crash.h"
|
32
32
|
#include "src/core/lib/gprpp/strerror.h"
|
@@ -38,8 +38,8 @@ static grpc_error_handle pipe_init(grpc_wakeup_fd* fd_info) {
|
|
38
38
|
int pipefd[2];
|
39
39
|
int r = pipe(pipefd);
|
40
40
|
if (0 != r) {
|
41
|
-
|
42
|
-
|
41
|
+
LOG(ERROR) << "pipe creation failed (" << errno
|
42
|
+
<< "): " << grpc_core::StrError(errno);
|
43
43
|
return GRPC_OS_ERROR(errno, "pipe");
|
44
44
|
}
|
45
45
|
grpc_error_handle err;
|
@@ -26,6 +26,7 @@
|
|
26
26
|
#include "absl/base/thread_annotations.h"
|
27
27
|
#include "absl/log/check.h"
|
28
28
|
#include "absl/status/status.h"
|
29
|
+
#include "absl/strings/str_cat.h"
|
29
30
|
#include "absl/types/optional.h"
|
30
31
|
|
31
32
|
#include <grpc/support/log.h>
|
@@ -121,6 +122,11 @@ class Waker {
|
|
121
122
|
return wakeable_and_arg_.ActivityDebugTag();
|
122
123
|
}
|
123
124
|
|
125
|
+
std::string DebugString() {
|
126
|
+
return absl::StrFormat("Waker{%p, %d}", wakeable_and_arg_.wakeable,
|
127
|
+
wakeable_and_arg_.wakeup_mask);
|
128
|
+
}
|
129
|
+
|
124
130
|
// This is for tests to assert that a waker is occupied or not.
|
125
131
|
bool is_unwakeable() const {
|
126
132
|
return wakeable_and_arg_.wakeable == promise_detail::unwakeable();
|
@@ -283,6 +289,19 @@ class ContextHolder<std::unique_ptr<Context, Deleter>> {
|
|
283
289
|
std::unique_ptr<Context, Deleter> value_;
|
284
290
|
};
|
285
291
|
|
292
|
+
template <typename Context>
|
293
|
+
class ContextHolder<RefCountedPtr<Context>> {
|
294
|
+
public:
|
295
|
+
using ContextType = Context;
|
296
|
+
|
297
|
+
explicit ContextHolder(RefCountedPtr<Context> value)
|
298
|
+
: value_(std::move(value)) {}
|
299
|
+
Context* GetContext() { return value_.get(); }
|
300
|
+
|
301
|
+
private:
|
302
|
+
RefCountedPtr<Context> value_;
|
303
|
+
};
|
304
|
+
|
286
305
|
template <>
|
287
306
|
class Context<Activity> {
|
288
307
|
public:
|
@@ -290,19 +309,23 @@ class Context<Activity> {
|
|
290
309
|
};
|
291
310
|
|
292
311
|
template <typename HeldContext>
|
293
|
-
using ContextTypeFromHeld = typename ContextHolder<
|
312
|
+
using ContextTypeFromHeld = typename ContextHolder<
|
313
|
+
typename std::remove_reference<HeldContext>::type>::ContextType;
|
294
314
|
|
295
315
|
template <typename... Contexts>
|
296
|
-
class ActivityContexts
|
316
|
+
class ActivityContexts
|
317
|
+
: public ContextHolder<typename std::remove_reference<Contexts>::type>... {
|
297
318
|
public:
|
298
319
|
explicit ActivityContexts(Contexts&&... contexts)
|
299
|
-
: ContextHolder<
|
320
|
+
: ContextHolder<typename std::remove_reference<Contexts>::type>(
|
321
|
+
std::forward<Contexts>(contexts))... {}
|
300
322
|
|
301
323
|
class ScopedContext : public Context<ContextTypeFromHeld<Contexts>>... {
|
302
324
|
public:
|
303
325
|
explicit ScopedContext(ActivityContexts* contexts)
|
304
326
|
: Context<ContextTypeFromHeld<Contexts>>(
|
305
|
-
static_cast<ContextHolder<
|
327
|
+
static_cast<ContextHolder<
|
328
|
+
typename std::remove_reference<Contexts>::type>*>(contexts)
|
306
329
|
->GetContext())... {
|
307
330
|
// Silence `unused-but-set-parameter` in case of Contexts = {}
|
308
331
|
(void)contexts;
|
@@ -17,7 +17,9 @@
|
|
17
17
|
|
18
18
|
#include <grpc/support/port_platform.h>
|
19
19
|
|
20
|
+
#include "src/core/lib/promise/context.h"
|
20
21
|
#include "src/core/lib/promise/detail/promise_like.h"
|
22
|
+
#include "src/core/lib/resource_quota/arena.h"
|
21
23
|
|
22
24
|
namespace grpc_core {
|
23
25
|
|
@@ -31,6 +33,7 @@ class Handler {
|
|
31
33
|
Handler& operator=(const Handler&) = delete;
|
32
34
|
~Handler() {
|
33
35
|
if (!done_) {
|
36
|
+
promise_detail::Context<Arena> ctx(arena_.get());
|
34
37
|
fn_();
|
35
38
|
}
|
36
39
|
}
|
@@ -48,6 +51,13 @@ class Handler {
|
|
48
51
|
|
49
52
|
private:
|
50
53
|
Fn fn_;
|
54
|
+
// Since cancellation happens at destruction time we need to either capture
|
55
|
+
// context here (via the arena), or make sure that no promise is destructed
|
56
|
+
// without an Arena context on the stack. The latter is an eternal game of
|
57
|
+
// whackamole, so we're choosing the former for now.
|
58
|
+
// TODO(ctiller): re-evaluate at some point in the future.
|
59
|
+
RefCountedPtr<Arena> arena_ =
|
60
|
+
HasContext<Arena>() ? GetContext<Arena>()->Ref() : nullptr;
|
51
61
|
bool done_ = false;
|
52
62
|
};
|
53
63
|
|
@@ -70,6 +80,20 @@ auto OnCancel(MainFn main_fn, CancelFn cancel_fn) {
|
|
70
80
|
};
|
71
81
|
}
|
72
82
|
|
83
|
+
// Similar to OnCancel, but returns a factory that uses main_fn to construct the
|
84
|
+
// resulting promise. If the factory is dropped without being called, cancel_fn
|
85
|
+
// is called.
|
86
|
+
template <typename MainFn, typename CancelFn>
|
87
|
+
auto OnCancelFactory(MainFn main_fn, CancelFn cancel_fn) {
|
88
|
+
return [on_cancel =
|
89
|
+
cancel_callback_detail::Handler<CancelFn>(std::move(cancel_fn)),
|
90
|
+
main_fn = std::move(main_fn)]() mutable {
|
91
|
+
auto r = main_fn();
|
92
|
+
on_cancel.Done();
|
93
|
+
return r;
|
94
|
+
};
|
95
|
+
};
|
96
|
+
|
73
97
|
} // namespace grpc_core
|
74
98
|
|
75
99
|
#endif // GRPC_SRC_CORE_LIB_PROMISE_CANCEL_CALLBACK_H
|
@@ -119,6 +119,17 @@ T* GetContext() {
|
|
119
119
|
return p;
|
120
120
|
}
|
121
121
|
|
122
|
+
// Retrieve the current value of a context, or nullptr if the value is unset.
|
123
|
+
template <typename T>
|
124
|
+
T* MaybeGetContext() {
|
125
|
+
return promise_detail::Context<T>::get();
|
126
|
+
}
|
127
|
+
|
128
|
+
template <typename T>
|
129
|
+
void SetContext(T* p) {
|
130
|
+
promise_detail::Context<T>::set(p);
|
131
|
+
}
|
132
|
+
|
122
133
|
// Given a promise and a context, return a promise that has that context set.
|
123
134
|
template <typename T, typename F>
|
124
135
|
promise_detail::WithContext<T, F> WithContext(F f, T* context) {
|