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
@@ -60,30 +60,16 @@ const absl::string_view kChildrenPropertyUrl = TYPE_URL(TYPE_CHILDREN_TAG);
|
|
60
60
|
|
61
61
|
const char* GetStatusIntPropertyUrl(StatusIntProperty key) {
|
62
62
|
switch (key) {
|
63
|
-
case StatusIntProperty::kErrorNo:
|
64
|
-
return TYPE_URL(TYPE_INT_TAG "errno");
|
65
63
|
case StatusIntProperty::kFileLine:
|
66
64
|
return TYPE_URL(TYPE_INT_TAG "file_line");
|
67
65
|
case StatusIntProperty::kStreamId:
|
68
66
|
return TYPE_URL(TYPE_INT_TAG "stream_id");
|
69
67
|
case StatusIntProperty::kRpcStatus:
|
70
68
|
return TYPE_URL(TYPE_INT_TAG "grpc_status");
|
71
|
-
case StatusIntProperty::kOffset:
|
72
|
-
return TYPE_URL(TYPE_INT_TAG "offset");
|
73
|
-
case StatusIntProperty::kIndex:
|
74
|
-
return TYPE_URL(TYPE_INT_TAG "index");
|
75
|
-
case StatusIntProperty::kSize:
|
76
|
-
return TYPE_URL(TYPE_INT_TAG "size");
|
77
69
|
case StatusIntProperty::kHttp2Error:
|
78
70
|
return TYPE_URL(TYPE_INT_TAG "http2_error");
|
79
|
-
case StatusIntProperty::kTsiCode:
|
80
|
-
return TYPE_URL(TYPE_INT_TAG "tsi_code");
|
81
|
-
case StatusIntProperty::kWsaError:
|
82
|
-
return TYPE_URL(TYPE_INT_TAG "wsa_error");
|
83
71
|
case StatusIntProperty::kFd:
|
84
72
|
return TYPE_URL(TYPE_INT_TAG "fd");
|
85
|
-
case StatusIntProperty::kHttpStatus:
|
86
|
-
return TYPE_URL(TYPE_INT_TAG "http_status");
|
87
73
|
case StatusIntProperty::kOccurredDuringWrite:
|
88
74
|
return TYPE_URL(TYPE_INT_TAG "occurred_during_write");
|
89
75
|
case StatusIntProperty::ChannelConnectivityState:
|
@@ -100,24 +86,8 @@ const char* GetStatusStrPropertyUrl(StatusStrProperty key) {
|
|
100
86
|
return TYPE_URL(TYPE_STR_TAG "description");
|
101
87
|
case StatusStrProperty::kFile:
|
102
88
|
return TYPE_URL(TYPE_STR_TAG "file");
|
103
|
-
case StatusStrProperty::kOsError:
|
104
|
-
return TYPE_URL(TYPE_STR_TAG "os_error");
|
105
|
-
case StatusStrProperty::kSyscall:
|
106
|
-
return TYPE_URL(TYPE_STR_TAG "syscall");
|
107
|
-
case StatusStrProperty::kTargetAddress:
|
108
|
-
return TYPE_URL(TYPE_STR_TAG "target_address");
|
109
89
|
case StatusStrProperty::kGrpcMessage:
|
110
90
|
return TYPE_URL(TYPE_STR_TAG "grpc_message");
|
111
|
-
case StatusStrProperty::kRawBytes:
|
112
|
-
return TYPE_URL(TYPE_STR_TAG "raw_bytes");
|
113
|
-
case StatusStrProperty::kTsiError:
|
114
|
-
return TYPE_URL(TYPE_STR_TAG "tsi_error");
|
115
|
-
case StatusStrProperty::kFilename:
|
116
|
-
return TYPE_URL(TYPE_STR_TAG "filename");
|
117
|
-
case StatusStrProperty::kKey:
|
118
|
-
return TYPE_URL(TYPE_STR_TAG "key");
|
119
|
-
case StatusStrProperty::kValue:
|
120
|
-
return TYPE_URL(TYPE_STR_TAG "value");
|
121
91
|
}
|
122
92
|
GPR_UNREACHABLE_CODE(return "unknown");
|
123
93
|
}
|
@@ -348,6 +318,17 @@ std::string StatusToString(const absl::Status& status) {
|
|
348
318
|
: absl::StrCat(head, " {", absl::StrJoin(kvs, ", "), "}");
|
349
319
|
}
|
350
320
|
|
321
|
+
absl::Status AddMessagePrefix(absl::string_view prefix, absl::Status status) {
|
322
|
+
absl::Status new_status(status.code(),
|
323
|
+
absl::StrCat(prefix, ": ", status.message()));
|
324
|
+
// TODO(roth): Remove this once we elimiate all status attributes.
|
325
|
+
status.ForEachPayload(
|
326
|
+
[&](absl::string_view type_url, const absl::Cord& payload) {
|
327
|
+
new_status.SetPayload(type_url, payload);
|
328
|
+
});
|
329
|
+
return new_status;
|
330
|
+
}
|
331
|
+
|
351
332
|
namespace internal {
|
352
333
|
|
353
334
|
google_rpc_Status* StatusToProto(const absl::Status& status, upb_Arena* arena) {
|
@@ -48,8 +48,6 @@ namespace grpc_core {
|
|
48
48
|
|
49
49
|
/// This enum should have the same value of grpc_error_ints
|
50
50
|
enum class StatusIntProperty {
|
51
|
-
/// 'errno' from the operating system
|
52
|
-
kErrorNo,
|
53
51
|
/// __LINE__ from the call site creating the error
|
54
52
|
kFileLine,
|
55
53
|
/// stream identifier: for errors that are associated with an individual
|
@@ -58,23 +56,10 @@ enum class StatusIntProperty {
|
|
58
56
|
/// grpc status code representing this error
|
59
57
|
// TODO(veblush): Remove this after grpc_error is replaced with absl::Status
|
60
58
|
kRpcStatus,
|
61
|
-
/// offset into some binary blob (usually represented by
|
62
|
-
/// RAW_BYTES) where the error occurred
|
63
|
-
kOffset,
|
64
|
-
/// context sensitive index associated with the error
|
65
|
-
kIndex,
|
66
|
-
/// context sensitive size associated with the error
|
67
|
-
kSize,
|
68
59
|
/// http2 error code associated with the error (see the HTTP2 RFC)
|
69
60
|
kHttp2Error,
|
70
|
-
/// TSI status code associated with the error
|
71
|
-
kTsiCode,
|
72
|
-
/// WSAGetLastError() reported when this error occurred
|
73
|
-
kWsaError,
|
74
61
|
/// File descriptor associated with this error
|
75
62
|
kFd,
|
76
|
-
/// HTTP status (i.e. 404)
|
77
|
-
kHttpStatus,
|
78
63
|
/// chttp2: did the error occur while a write was in progress
|
79
64
|
kOccurredDuringWrite,
|
80
65
|
/// channel connectivity state associated with the error
|
@@ -89,24 +74,8 @@ enum class StatusStrProperty {
|
|
89
74
|
kDescription,
|
90
75
|
/// source file in which this error occurred
|
91
76
|
kFile,
|
92
|
-
/// operating system description of this error
|
93
|
-
kOsError,
|
94
|
-
/// syscall that generated this error
|
95
|
-
kSyscall,
|
96
77
|
/// peer that we were trying to communicate when this error occurred
|
97
|
-
kTargetAddress,
|
98
|
-
/// grpc status message associated with this error
|
99
78
|
kGrpcMessage,
|
100
|
-
/// hex dump (or similar) with the data that generated this error
|
101
|
-
kRawBytes,
|
102
|
-
/// tsi error string associated with this error
|
103
|
-
kTsiError,
|
104
|
-
/// filename that we were trying to read/write when this error occurred
|
105
|
-
kFilename,
|
106
|
-
/// key associated with the error
|
107
|
-
kKey,
|
108
|
-
/// value associated with the error
|
109
|
-
kValue,
|
110
79
|
};
|
111
80
|
|
112
81
|
/// This enum should have the same value of grpc_error_times
|
@@ -158,6 +127,9 @@ GRPC_MUST_USE_RESULT std::vector<absl::Status> StatusGetChildren(
|
|
158
127
|
/// CANCELLATION:SampleMessage {errno:'2021', line:'54', children:[ABORTED]}
|
159
128
|
GRPC_MUST_USE_RESULT std::string StatusToString(const absl::Status& status);
|
160
129
|
|
130
|
+
/// Adds prefix to the message of status.
|
131
|
+
absl::Status AddMessagePrefix(absl::string_view prefix, absl::Status status);
|
132
|
+
|
161
133
|
namespace internal {
|
162
134
|
|
163
135
|
/// Builds a upb message, google_rpc_Status from a status
|
data/src/core/lib/gprpp/time.cc
CHANGED
@@ -21,9 +21,9 @@
|
|
21
21
|
#include <utility>
|
22
22
|
|
23
23
|
#include "absl/log/check.h"
|
24
|
+
#include "absl/log/log.h"
|
24
25
|
#include "absl/strings/str_format.h"
|
25
26
|
|
26
|
-
#include <grpc/support/log.h>
|
27
27
|
#include <grpc/support/port_platform.h>
|
28
28
|
#include <grpc/support/time.h>
|
29
29
|
|
@@ -60,9 +60,8 @@ GPR_ATTRIBUTE_NOINLINE std::pair<int64_t, gpr_cycle_counter> InitTime() {
|
|
60
60
|
if (process_epoch_seconds > 1) {
|
61
61
|
break;
|
62
62
|
}
|
63
|
-
|
64
|
-
|
65
|
-
"sleeping for 100ms");
|
63
|
+
LOG(INFO) << "gpr_now(GPR_CLOCK_MONOTONIC) returns a very small number: "
|
64
|
+
"sleeping for 100ms";
|
66
65
|
gpr_sleep_until(gpr_time_add(now, gpr_time_from_millis(100, GPR_TIMESPAN)));
|
67
66
|
}
|
68
67
|
|
data/src/core/lib/gprpp/time.h
CHANGED
@@ -24,11 +24,12 @@
|
|
24
24
|
#include "absl/types/optional.h"
|
25
25
|
|
26
26
|
#include <grpc/event_engine/event_engine.h>
|
27
|
+
#include <grpc/support/log.h>
|
27
28
|
#include <grpc/support/port_platform.h>
|
28
29
|
#include <grpc/support/time.h>
|
29
30
|
|
30
|
-
#include "src/core/
|
31
|
-
#include "src/core/
|
31
|
+
#include "src/core/util/time_precise.h"
|
32
|
+
#include "src/core/util/useful.h"
|
32
33
|
|
33
34
|
#define GRPC_LOG_EVERY_N_SEC(n, severity, format, ...) \
|
34
35
|
do { \
|
@@ -23,7 +23,7 @@
|
|
23
23
|
|
24
24
|
#include <grpc/support/port_platform.h>
|
25
25
|
|
26
|
-
#include "src/core/
|
26
|
+
#include "src/core/util/useful.h"
|
27
27
|
|
28
28
|
// Provides a type name that is unique by instance rather than by
|
29
29
|
// string content. This is useful in cases where there are different
|
@@ -14,8 +14,11 @@
|
|
14
14
|
|
15
15
|
#include "src/core/lib/gprpp/validation_errors.h"
|
16
16
|
|
17
|
+
#include <inttypes.h>
|
18
|
+
|
17
19
|
#include <utility>
|
18
20
|
|
21
|
+
#include "absl/log/log.h"
|
19
22
|
#include "absl/status/status.h"
|
20
23
|
#include "absl/strings/str_cat.h"
|
21
24
|
#include "absl/strings/str_join.h"
|
@@ -34,7 +37,13 @@ void ValidationErrors::PushField(absl::string_view ext) {
|
|
34
37
|
void ValidationErrors::PopField() { fields_.pop_back(); }
|
35
38
|
|
36
39
|
void ValidationErrors::AddError(absl::string_view error) {
|
37
|
-
|
40
|
+
auto key = absl::StrJoin(fields_, "");
|
41
|
+
if (field_errors_[key].size() >= max_error_count_) {
|
42
|
+
VLOG(2) << "Ignoring validation error: too many errors found ("
|
43
|
+
<< max_error_count_ << ")";
|
44
|
+
return;
|
45
|
+
}
|
46
|
+
field_errors_[key].emplace_back(error);
|
38
47
|
}
|
39
48
|
|
40
49
|
bool ValidationErrors::FieldHasErrors() const {
|
@@ -63,6 +63,9 @@ namespace grpc_core {
|
|
63
63
|
// }
|
64
64
|
class ValidationErrors {
|
65
65
|
public:
|
66
|
+
// Default maximum number of errors to track per scope.
|
67
|
+
static constexpr size_t kMaxErrorCount = 20;
|
68
|
+
|
66
69
|
// Pushes a field name onto the stack at construction and pops it off
|
67
70
|
// of the stack at destruction.
|
68
71
|
class ScopedField {
|
@@ -93,6 +96,12 @@ class ValidationErrors {
|
|
93
96
|
ValidationErrors* errors_;
|
94
97
|
};
|
95
98
|
|
99
|
+
ValidationErrors() : ValidationErrors(kMaxErrorCount) {}
|
100
|
+
|
101
|
+
// Creates a tracker that collects at most `max_error_count` errors per field.
|
102
|
+
explicit ValidationErrors(size_t max_error_count)
|
103
|
+
: max_error_count_(max_error_count) {}
|
104
|
+
|
96
105
|
// Records that we've encountered an error associated with the current
|
97
106
|
// field.
|
98
107
|
void AddError(absl::string_view error) GPR_ATTRIBUTE_NOINLINE;
|
@@ -127,6 +136,8 @@ class ValidationErrors {
|
|
127
136
|
// Stack of field names indicating the field that we are currently
|
128
137
|
// validating.
|
129
138
|
std::vector<std::string> fields_;
|
139
|
+
|
140
|
+
size_t max_error_count_;
|
130
141
|
};
|
131
142
|
|
132
143
|
} // namespace grpc_core
|
@@ -23,8 +23,7 @@
|
|
23
23
|
#include <sys/types.h>
|
24
24
|
|
25
25
|
#include "absl/log/check.h"
|
26
|
-
|
27
|
-
#include <grpc/support/log.h>
|
26
|
+
#include "absl/log/log.h"
|
28
27
|
|
29
28
|
#include "src/core/lib/gprpp/crash.h"
|
30
29
|
#include "src/core/lib/gprpp/stat.h"
|
@@ -38,8 +37,8 @@ absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) {
|
|
38
37
|
struct _stat buf;
|
39
38
|
if (_stat(filename, &buf) != 0) {
|
40
39
|
std::string error_msg = StrError(errno);
|
41
|
-
|
42
|
-
|
40
|
+
LOG(ERROR) << "_stat failed for filename " << filename << " with error "
|
41
|
+
<< error_msg;
|
43
42
|
return absl::Status(absl::StatusCode::kInternal, error_msg);
|
44
43
|
}
|
45
44
|
// Last file/directory modification time.
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <string.h>
|
25
25
|
|
26
26
|
#include "absl/log/check.h"
|
27
|
+
#include "absl/log/log.h"
|
27
28
|
|
28
29
|
#include <grpc/support/alloc.h>
|
29
30
|
#include <grpc/support/log.h>
|
@@ -149,12 +150,12 @@ namespace grpc_core {
|
|
149
150
|
|
150
151
|
void Thread::Signal(gpr_thd_id /* tid */, int /* sig */) {
|
151
152
|
// TODO(hork): Implement
|
152
|
-
|
153
|
+
VLOG(2) << "Thread signals are not supported on Windows.";
|
153
154
|
}
|
154
155
|
|
155
156
|
void Thread::Kill(gpr_thd_id /* tid */) {
|
156
157
|
// TODO(hork): Implement
|
157
|
-
|
158
|
+
VLOG(2) << "Thread::Kill is not supported on Windows.";
|
158
159
|
}
|
159
160
|
|
160
161
|
Thread::Thread(const char* /* thd_name */, void (*thd_body)(void* arg),
|
@@ -28,13 +28,12 @@
|
|
28
28
|
|
29
29
|
#include "absl/container/inlined_vector.h"
|
30
30
|
#include "absl/log/check.h"
|
31
|
+
#include "absl/log/log.h"
|
31
32
|
|
32
33
|
#include <grpc/event_engine/event_engine.h>
|
33
34
|
#include <grpc/support/log.h>
|
34
35
|
#include <grpc/support/port_platform.h>
|
35
36
|
|
36
|
-
#include "src/core/lib/debug/stats.h"
|
37
|
-
#include "src/core/lib/debug/stats_data.h"
|
38
37
|
#include "src/core/lib/debug/trace.h"
|
39
38
|
#include "src/core/lib/experiments/experiments.h"
|
40
39
|
#include "src/core/lib/gprpp/debug_location.h"
|
@@ -42,11 +41,11 @@
|
|
42
41
|
#include "src/core/lib/gprpp/orphanable.h"
|
43
42
|
#include "src/core/lib/gprpp/sync.h"
|
44
43
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
44
|
+
#include "src/core/telemetry/stats.h"
|
45
|
+
#include "src/core/telemetry/stats_data.h"
|
45
46
|
|
46
47
|
namespace grpc_core {
|
47
48
|
|
48
|
-
DebugOnlyTraceFlag grpc_work_serializer_trace(false, "work_serializer");
|
49
|
-
|
50
49
|
//
|
51
50
|
// WorkSerializer::WorkSerializerImpl
|
52
51
|
//
|
@@ -137,7 +136,7 @@ class WorkSerializer::LegacyWorkSerializer final : public WorkSerializerImpl {
|
|
137
136
|
|
138
137
|
void WorkSerializer::LegacyWorkSerializer::Run(std::function<void()> callback,
|
139
138
|
const DebugLocation& location) {
|
140
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
139
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
141
140
|
gpr_log(GPR_INFO, "WorkSerializer::Run() %p Scheduling callback [%s:%d]",
|
142
141
|
this, location.file(), location.line());
|
143
142
|
}
|
@@ -150,9 +149,7 @@ void WorkSerializer::LegacyWorkSerializer::Run(std::function<void()> callback,
|
|
150
149
|
if (GetOwners(prev_ref_pair) == 0) {
|
151
150
|
// We took ownership of the WorkSerializer. Invoke callback and drain queue.
|
152
151
|
SetCurrentThread();
|
153
|
-
|
154
|
-
gpr_log(GPR_INFO, " Executing immediately");
|
155
|
-
}
|
152
|
+
GRPC_TRACE_LOG(work_serializer, INFO) << " Executing immediately";
|
156
153
|
callback();
|
157
154
|
// Delete the callback while still holding the WorkSerializer, so
|
158
155
|
// that any refs being held by the callback via lambda captures will
|
@@ -160,12 +157,12 @@ void WorkSerializer::LegacyWorkSerializer::Run(std::function<void()> callback,
|
|
160
157
|
callback = nullptr;
|
161
158
|
DrainQueueOwned();
|
162
159
|
} else {
|
163
|
-
// Another thread is holding the WorkSerializer, so decrement the
|
164
|
-
// count we just added and queue the callback.
|
160
|
+
// Another thread is holding the WorkSerializer, so decrement the
|
161
|
+
// ownership count we just added and queue the callback.
|
165
162
|
refs_.fetch_sub(MakeRefPair(1, 0), std::memory_order_acq_rel);
|
166
163
|
CallbackWrapper* cb_wrapper =
|
167
164
|
new CallbackWrapper(std::move(callback), location);
|
168
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
165
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
169
166
|
gpr_log(GPR_INFO, " Scheduling on queue : item %p", cb_wrapper);
|
170
167
|
}
|
171
168
|
queue_.Push(&cb_wrapper->mpscq_node);
|
@@ -176,7 +173,7 @@ void WorkSerializer::LegacyWorkSerializer::Schedule(
|
|
176
173
|
std::function<void()> callback, const DebugLocation& location) {
|
177
174
|
CallbackWrapper* cb_wrapper =
|
178
175
|
new CallbackWrapper(std::move(callback), location);
|
179
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
176
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
180
177
|
gpr_log(GPR_INFO,
|
181
178
|
"WorkSerializer::Schedule() %p Scheduling callback %p [%s:%d]",
|
182
179
|
this, cb_wrapper, location.file(), location.line());
|
@@ -186,15 +183,13 @@ void WorkSerializer::LegacyWorkSerializer::Schedule(
|
|
186
183
|
}
|
187
184
|
|
188
185
|
void WorkSerializer::LegacyWorkSerializer::Orphan() {
|
189
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
186
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
190
187
|
gpr_log(GPR_INFO, "WorkSerializer::Orphan() %p", this);
|
191
188
|
}
|
192
189
|
const uint64_t prev_ref_pair =
|
193
190
|
refs_.fetch_sub(MakeRefPair(0, 1), std::memory_order_acq_rel);
|
194
191
|
if (GetOwners(prev_ref_pair) == 0 && GetSize(prev_ref_pair) == 1) {
|
195
|
-
|
196
|
-
gpr_log(GPR_INFO, " Destroying");
|
197
|
-
}
|
192
|
+
GRPC_TRACE_LOG(work_serializer, INFO) << " Destroying";
|
198
193
|
delete this;
|
199
194
|
}
|
200
195
|
}
|
@@ -202,7 +197,7 @@ void WorkSerializer::LegacyWorkSerializer::Orphan() {
|
|
202
197
|
// The thread that calls this loans itself to the work serializer so as to
|
203
198
|
// execute all the scheduled callbacks.
|
204
199
|
void WorkSerializer::LegacyWorkSerializer::DrainQueue() {
|
205
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
200
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
206
201
|
gpr_log(GPR_INFO, "WorkSerializer::DrainQueue() %p", this);
|
207
202
|
}
|
208
203
|
// Attempt to take ownership of the WorkSerializer. Also increment the queue
|
@@ -214,8 +209,8 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueue() {
|
|
214
209
|
// We took ownership of the WorkSerializer. Drain the queue.
|
215
210
|
DrainQueueOwned();
|
216
211
|
} else {
|
217
|
-
// Another thread is holding the WorkSerializer, so decrement the
|
218
|
-
// count we just added and queue a no-op callback.
|
212
|
+
// Another thread is holding the WorkSerializer, so decrement the
|
213
|
+
// ownership count we just added and queue a no-op callback.
|
219
214
|
refs_.fetch_sub(MakeRefPair(1, 0), std::memory_order_acq_rel);
|
220
215
|
CallbackWrapper* cb_wrapper = new CallbackWrapper([]() {}, DEBUG_LOCATION);
|
221
216
|
queue_.Push(&cb_wrapper->mpscq_node);
|
@@ -223,7 +218,7 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueue() {
|
|
223
218
|
}
|
224
219
|
|
225
220
|
void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() {
|
226
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
221
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
227
222
|
gpr_log(GPR_INFO, "WorkSerializer::DrainQueueOwned() %p", this);
|
228
223
|
}
|
229
224
|
while (true) {
|
@@ -231,9 +226,7 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() {
|
|
231
226
|
// It is possible that while draining the queue, the last callback ended
|
232
227
|
// up orphaning the work serializer. In that case, delete the object.
|
233
228
|
if (GetSize(prev_ref_pair) == 1) {
|
234
|
-
|
235
|
-
gpr_log(GPR_INFO, " Queue Drained. Destroying");
|
236
|
-
}
|
229
|
+
GRPC_TRACE_LOG(work_serializer, INFO) << " Queue Drained. Destroying";
|
237
230
|
delete this;
|
238
231
|
return;
|
239
232
|
}
|
@@ -251,9 +244,7 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() {
|
|
251
244
|
}
|
252
245
|
if (GetSize(expected) == 0) {
|
253
246
|
// WorkSerializer got orphaned while this was running
|
254
|
-
|
255
|
-
gpr_log(GPR_INFO, " Queue Drained. Destroying");
|
256
|
-
}
|
247
|
+
GRPC_TRACE_LOG(work_serializer, INFO) << " Queue Drained. Destroying";
|
257
248
|
delete this;
|
258
249
|
return;
|
259
250
|
}
|
@@ -271,11 +262,10 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() {
|
|
271
262
|
queue_.PopAndCheckEnd(&empty_unused))) == nullptr) {
|
272
263
|
// This can happen due to a race condition within the mpscq
|
273
264
|
// implementation or because of a race with Run()/Schedule().
|
274
|
-
|
275
|
-
|
276
|
-
}
|
265
|
+
GRPC_TRACE_LOG(work_serializer, INFO)
|
266
|
+
<< " Queue returned nullptr, trying again";
|
277
267
|
}
|
278
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
268
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
279
269
|
gpr_log(GPR_INFO, " Running item %p : callback scheduled at [%s:%d]",
|
280
270
|
cb_wrapper, cb_wrapper->location.file(),
|
281
271
|
cb_wrapper->location.line());
|
@@ -291,9 +281,9 @@ void WorkSerializer::LegacyWorkSerializer::DrainQueueOwned() {
|
|
291
281
|
|
292
282
|
// DispatchingWorkSerializer: executes callbacks one at a time on EventEngine.
|
293
283
|
// One at a time guarantees that fixed size thread pools in EventEngine
|
294
|
-
// implementations are not starved of threads by long running work
|
295
|
-
// We implement EventEngine::Closure directly to avoid allocating
|
296
|
-
// callback in the queue when scheduling.
|
284
|
+
// implementations are not starved of threads by long running work
|
285
|
+
// serializers. We implement EventEngine::Closure directly to avoid allocating
|
286
|
+
// once per callback in the queue when scheduling.
|
297
287
|
class WorkSerializer::DispatchingWorkSerializer final
|
298
288
|
: public WorkSerializerImpl,
|
299
289
|
public grpc_event_engine::experimental::EventEngine::Closure {
|
@@ -306,7 +296,8 @@ class WorkSerializer::DispatchingWorkSerializer final
|
|
306
296
|
const DebugLocation& location) override;
|
307
297
|
void Schedule(std::function<void()> callback,
|
308
298
|
const DebugLocation& location) override {
|
309
|
-
// We always dispatch to event engine, so Schedule and Run share
|
299
|
+
// We always dispatch to event engine, so Schedule and Run share
|
300
|
+
// semantics.
|
310
301
|
Run(callback, location);
|
311
302
|
}
|
312
303
|
void DrainQueue() override {}
|
@@ -356,11 +347,11 @@ class WorkSerializer::DispatchingWorkSerializer final
|
|
356
347
|
// separated from incoming cache lines.
|
357
348
|
|
358
349
|
// Callbacks that are currently being processed.
|
359
|
-
// Only accessed by: a Run() call going from not-running to running, or a
|
360
|
-
// item being executed in EventEngine -- ie this does not need a mutex
|
361
|
-
// all access is serialized.
|
362
|
-
//
|
363
|
-
//
|
350
|
+
// Only accessed by: a Run() call going from not-running to running, or a
|
351
|
+
// work item being executed in EventEngine -- ie this does not need a mutex
|
352
|
+
// because all access is serialized. Stored in reverse execution order so
|
353
|
+
// that callbacks can be `pop_back()`'d on completion to free up any
|
354
|
+
// resources they hold.
|
364
355
|
CallbackVector processing_;
|
365
356
|
// EventEngine instance upon which we'll do our work.
|
366
357
|
const std::shared_ptr<grpc_event_engine::experimental::EventEngine>
|
@@ -374,16 +365,16 @@ class WorkSerializer::DispatchingWorkSerializer final
|
|
374
365
|
// on an idle WorkSerializer, and transitions back to false after the last
|
375
366
|
// callback scheduled is completed and the WorkSerializer is again idle.
|
376
367
|
// - orphaned_ transitions to true once upon Orphan being called.
|
377
|
-
// When orphaned_ is true and running_ is false, the
|
378
|
-
// instance is deleted.
|
368
|
+
// When orphaned_ is true and running_ is false, the
|
369
|
+
// DispatchingWorkSerializer instance is deleted.
|
379
370
|
bool running_ ABSL_GUARDED_BY(mu_) = false;
|
380
371
|
bool orphaned_ ABSL_GUARDED_BY(mu_) = false;
|
381
372
|
Mutex mu_;
|
382
|
-
// Queued callbacks. New work items land here, and when processing_ is
|
383
|
-
// we move this entire queue into processing_ and work on draining
|
384
|
-
// In low traffic scenarios this gives two mutex acquisitions per
|
385
|
-
// but as load increases we get some natural batching and the
|
386
|
-
// acquisitions per work item tends towards 1.
|
373
|
+
// Queued callbacks. New work items land here, and when processing_ is
|
374
|
+
// drained we move this entire queue into processing_ and work on draining
|
375
|
+
// it again. In low traffic scenarios this gives two mutex acquisitions per
|
376
|
+
// work item, but as load increases we get some natural batching and the
|
377
|
+
// rate of mutex acquisitions per work item tends towards 1.
|
387
378
|
CallbackVector incoming_ ABSL_GUARDED_BY(mu_);
|
388
379
|
|
389
380
|
#ifndef NDEBUG
|
@@ -412,15 +403,15 @@ void WorkSerializer::DispatchingWorkSerializer::Orphan() {
|
|
412
403
|
// Implementation of WorkSerializerImpl::Run
|
413
404
|
void WorkSerializer::DispatchingWorkSerializer::Run(
|
414
405
|
std::function<void()> callback, const DebugLocation& location) {
|
415
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
406
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
416
407
|
gpr_log(GPR_INFO, "WorkSerializer[%p] Scheduling callback [%s:%d]", this,
|
417
408
|
location.file(), location.line());
|
418
409
|
}
|
419
410
|
global_stats().IncrementWorkSerializerItemsEnqueued();
|
420
411
|
MutexLock lock(&mu_);
|
421
412
|
if (!running_) {
|
422
|
-
// If we were previously idle, insert this callback directly into the
|
423
|
-
// processing_ list and start running.
|
413
|
+
// If we were previously idle, insert this callback directly into the
|
414
|
+
// empty processing_ list and start running.
|
424
415
|
running_ = true;
|
425
416
|
running_start_time_ = std::chrono::steady_clock::now();
|
426
417
|
items_processed_during_run_ = 0;
|
@@ -440,10 +431,10 @@ void WorkSerializer::DispatchingWorkSerializer::Run() {
|
|
440
431
|
// TODO(ctiller): remove these when we can deprecate ExecCtx
|
441
432
|
ApplicationCallbackExecCtx app_exec_ctx;
|
442
433
|
ExecCtx exec_ctx;
|
443
|
-
// Grab the last element of processing_ - which is the next item in our
|
444
|
-
// since processing_ is stored in reverse order.
|
434
|
+
// Grab the last element of processing_ - which is the next item in our
|
435
|
+
// queue since processing_ is stored in reverse order.
|
445
436
|
auto& cb = processing_.back();
|
446
|
-
if (GRPC_TRACE_FLAG_ENABLED(
|
437
|
+
if (GRPC_TRACE_FLAG_ENABLED(work_serializer)) {
|
447
438
|
gpr_log(GPR_INFO, "WorkSerializer[%p] Executing callback [%s:%d]", this,
|
448
439
|
cb.location.file(), cb.location.line());
|
449
440
|
}
|
@@ -451,9 +442,9 @@ void WorkSerializer::DispatchingWorkSerializer::Run() {
|
|
451
442
|
const auto start = std::chrono::steady_clock::now();
|
452
443
|
SetCurrentThread();
|
453
444
|
cb.callback();
|
454
|
-
// pop_back here destroys the callback - freeing any resources it might
|
455
|
-
// We do so before clearing the current thread in case the callback
|
456
|
-
// wants to check that it's in the WorkSerializer too.
|
445
|
+
// pop_back here destroys the callback - freeing any resources it might
|
446
|
+
// hold. We do so before clearing the current thread in case the callback
|
447
|
+
// destructor wants to check that it's in the WorkSerializer too.
|
457
448
|
processing_.pop_back();
|
458
449
|
ClearCurrentThread();
|
459
450
|
global_stats().IncrementWorkSerializerItemsDequeued();
|
@@ -507,8 +498,8 @@ bool WorkSerializer::DispatchingWorkSerializer::Refill() {
|
|
507
498
|
case RefillResult::kRefilled:
|
508
499
|
// Reverse processing_ so that we can pop_back() items in the correct
|
509
500
|
// order. (note that this is mostly pointer swaps inside the
|
510
|
-
// std::function's, so should be relatively cheap even for longer
|
511
|
-
// Do so here so we're outside of the RefillInner lock.
|
501
|
+
// std::function's, so should be relatively cheap even for longer
|
502
|
+
// lists). Do so here so we're outside of the RefillInner lock.
|
512
503
|
std::reverse(processing_.begin(), processing_.end());
|
513
504
|
return true;
|
514
505
|
case RefillResult::kFinished:
|
@@ -18,6 +18,8 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/iomgr/buffer_list.h"
|
20
20
|
|
21
|
+
#include "absl/log/log.h"
|
22
|
+
|
21
23
|
#include <grpc/support/log.h>
|
22
24
|
#include <grpc/support/port_platform.h>
|
23
25
|
#include <grpc/support/time.h>
|
@@ -42,7 +44,7 @@ void FillGprFromTimestamp(gpr_timespec* gts, const struct timespec* ts) {
|
|
42
44
|
|
43
45
|
void DefaultTimestampsCallback(void* /*arg*/, Timestamps* /*ts*/,
|
44
46
|
absl::Status /*shudown_err*/) {
|
45
|
-
|
47
|
+
VLOG(2) << "Timestamps callback has not been registered";
|
46
48
|
}
|
47
49
|
|
48
50
|
// The saved callback function that will be invoked when we get all the
|
@@ -321,7 +323,7 @@ void grpc_tcp_set_write_timestamps_callback(
|
|
321
323
|
// Can't comment out the name because some compilers and formatters don't
|
322
324
|
// like the sequence */* , which would arise from */*fn*/.
|
323
325
|
(void)fn;
|
324
|
-
|
326
|
+
VLOG(2) << "Timestamps callback is not enabled for this platform";
|
325
327
|
}
|
326
328
|
} // namespace grpc_core
|
327
329
|
|