grpc 1.41.0.pre2 → 1.42.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- 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 +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +81 -68
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -357,7 +357,12 @@ static void unref_by(grpc_fd* fd, int n) {
|
|
357
357
|
gpr_mu_destroy(&fd->mu);
|
358
358
|
grpc_iomgr_unregister_object(&fd->iomgr_object);
|
359
359
|
fork_fd_list_remove_node(fd->fork_fd_list);
|
360
|
-
if (fd->shutdown)
|
360
|
+
if (fd->shutdown) {
|
361
|
+
GRPC_ERROR_UNREF(fd->shutdown_error);
|
362
|
+
}
|
363
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
364
|
+
fd->shutdown_error.~Status();
|
365
|
+
#endif
|
361
366
|
gpr_free(fd);
|
362
367
|
} else {
|
363
368
|
GPR_ASSERT(old > n);
|
@@ -372,6 +377,9 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
|
|
372
377
|
gpr_mu_init(&r->mu);
|
373
378
|
gpr_atm_rel_store(&r->refst, 1);
|
374
379
|
r->shutdown = 0;
|
380
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
381
|
+
new (&r->shutdown_error) absl::Status();
|
382
|
+
#endif
|
375
383
|
r->read_closure = CLOSURE_NOT_READY;
|
376
384
|
r->write_closure = CLOSURE_NOT_READY;
|
377
385
|
r->fd = fd;
|
@@ -405,11 +413,11 @@ static grpc_error_handle pollset_kick_locked(grpc_fd_watcher* watcher) {
|
|
405
413
|
|
406
414
|
static void maybe_wake_one_watcher_locked(grpc_fd* fd) {
|
407
415
|
if (fd->inactive_watcher_root.next != &fd->inactive_watcher_root) {
|
408
|
-
pollset_kick_locked(fd->inactive_watcher_root.next);
|
416
|
+
(void)pollset_kick_locked(fd->inactive_watcher_root.next);
|
409
417
|
} else if (fd->read_watcher) {
|
410
|
-
pollset_kick_locked(fd->read_watcher);
|
418
|
+
(void)pollset_kick_locked(fd->read_watcher);
|
411
419
|
} else if (fd->write_watcher) {
|
412
|
-
pollset_kick_locked(fd->write_watcher);
|
420
|
+
(void)pollset_kick_locked(fd->write_watcher);
|
413
421
|
}
|
414
422
|
}
|
415
423
|
|
@@ -417,13 +425,13 @@ static void wake_all_watchers_locked(grpc_fd* fd) {
|
|
417
425
|
grpc_fd_watcher* watcher;
|
418
426
|
for (watcher = fd->inactive_watcher_root.next;
|
419
427
|
watcher != &fd->inactive_watcher_root; watcher = watcher->next) {
|
420
|
-
pollset_kick_locked(watcher);
|
428
|
+
(void)pollset_kick_locked(watcher);
|
421
429
|
}
|
422
430
|
if (fd->read_watcher) {
|
423
|
-
pollset_kick_locked(fd->read_watcher);
|
431
|
+
(void)pollset_kick_locked(fd->read_watcher);
|
424
432
|
}
|
425
433
|
if (fd->write_watcher && fd->write_watcher != fd->read_watcher) {
|
426
|
-
pollset_kick_locked(fd->write_watcher);
|
434
|
+
(void)pollset_kick_locked(fd->write_watcher);
|
427
435
|
}
|
428
436
|
}
|
429
437
|
|
@@ -873,13 +881,13 @@ static void pollset_add_fd(grpc_pollset* pollset, grpc_fd* fd) {
|
|
873
881
|
}
|
874
882
|
if (pollset->fd_count == pollset->fd_capacity) {
|
875
883
|
pollset->fd_capacity =
|
876
|
-
|
884
|
+
std::max(pollset->fd_capacity + 8, pollset->fd_count * 3 / 2);
|
877
885
|
pollset->fds = static_cast<grpc_fd**>(
|
878
886
|
gpr_realloc(pollset->fds, sizeof(grpc_fd*) * pollset->fd_capacity));
|
879
887
|
}
|
880
888
|
pollset->fds[pollset->fd_count++] = fd;
|
881
889
|
GRPC_FD_REF(fd, "multipoller");
|
882
|
-
pollset_kick(pollset, nullptr);
|
890
|
+
(void)pollset_kick(pollset, nullptr);
|
883
891
|
exit:
|
884
892
|
gpr_mu_unlock(&pollset->mu);
|
885
893
|
}
|
@@ -1114,7 +1122,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
1114
1122
|
/* check shutdown conditions */
|
1115
1123
|
if (pollset->shutting_down) {
|
1116
1124
|
if (pollset_has_workers(pollset)) {
|
1117
|
-
pollset_kick(pollset, nullptr);
|
1125
|
+
(void)pollset_kick(pollset, nullptr);
|
1118
1126
|
} else if (!pollset->called_shutdown && !pollset_has_observers(pollset)) {
|
1119
1127
|
pollset->called_shutdown = 1;
|
1120
1128
|
gpr_mu_unlock(&pollset->mu);
|
@@ -1136,7 +1144,7 @@ static void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
1136
1144
|
GPR_ASSERT(!pollset->shutting_down);
|
1137
1145
|
pollset->shutting_down = 1;
|
1138
1146
|
pollset->shutdown_done = closure;
|
1139
|
-
pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
|
1147
|
+
(void)pollset_kick(pollset, GRPC_POLLSET_KICK_BROADCAST);
|
1140
1148
|
if (!pollset->called_shutdown && !pollset_has_observers(pollset)) {
|
1141
1149
|
pollset->called_shutdown = 1;
|
1142
1150
|
finish_shutdown(pollset);
|
@@ -1198,7 +1206,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pollset_set,
|
|
1198
1206
|
gpr_mu_lock(&pollset_set->mu);
|
1199
1207
|
if (pollset_set->pollset_count == pollset_set->pollset_capacity) {
|
1200
1208
|
pollset_set->pollset_capacity =
|
1201
|
-
|
1209
|
+
std::max(size_t(8), 2 * pollset_set->pollset_capacity);
|
1202
1210
|
pollset_set->pollsets = static_cast<grpc_pollset**>(gpr_realloc(
|
1203
1211
|
pollset_set->pollsets,
|
1204
1212
|
pollset_set->pollset_capacity * sizeof(*pollset_set->pollsets)));
|
@@ -1223,8 +1231,8 @@ static void pollset_set_del_pollset(grpc_pollset_set* pollset_set,
|
|
1223
1231
|
for (i = 0; i < pollset_set->pollset_count; i++) {
|
1224
1232
|
if (pollset_set->pollsets[i] == pollset) {
|
1225
1233
|
pollset_set->pollset_count--;
|
1226
|
-
|
1227
|
-
|
1234
|
+
std::swap(pollset_set->pollsets[i],
|
1235
|
+
pollset_set->pollsets[pollset_set->pollset_count]);
|
1228
1236
|
break;
|
1229
1237
|
}
|
1230
1238
|
}
|
@@ -1247,7 +1255,8 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* bag,
|
|
1247
1255
|
size_t i, j;
|
1248
1256
|
gpr_mu_lock(&bag->mu);
|
1249
1257
|
if (bag->pollset_set_count == bag->pollset_set_capacity) {
|
1250
|
-
bag->pollset_set_capacity =
|
1258
|
+
bag->pollset_set_capacity =
|
1259
|
+
std::max(size_t(8), 2 * bag->pollset_set_capacity);
|
1251
1260
|
bag->pollset_sets = static_cast<grpc_pollset_set**>(
|
1252
1261
|
gpr_realloc(bag->pollset_sets,
|
1253
1262
|
bag->pollset_set_capacity * sizeof(*bag->pollset_sets)));
|
@@ -1272,8 +1281,8 @@ static void pollset_set_del_pollset_set(grpc_pollset_set* bag,
|
|
1272
1281
|
for (i = 0; i < bag->pollset_set_count; i++) {
|
1273
1282
|
if (bag->pollset_sets[i] == item) {
|
1274
1283
|
bag->pollset_set_count--;
|
1275
|
-
|
1276
|
-
|
1284
|
+
std::swap(bag->pollset_sets[i],
|
1285
|
+
bag->pollset_sets[bag->pollset_set_count]);
|
1277
1286
|
break;
|
1278
1287
|
}
|
1279
1288
|
}
|
@@ -1284,7 +1293,8 @@ static void pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
|
|
1284
1293
|
size_t i;
|
1285
1294
|
gpr_mu_lock(&pollset_set->mu);
|
1286
1295
|
if (pollset_set->fd_count == pollset_set->fd_capacity) {
|
1287
|
-
pollset_set->fd_capacity =
|
1296
|
+
pollset_set->fd_capacity =
|
1297
|
+
std::max(size_t(8), 2 * pollset_set->fd_capacity);
|
1288
1298
|
pollset_set->fds = static_cast<grpc_fd**>(
|
1289
1299
|
gpr_realloc(pollset_set->fds,
|
1290
1300
|
pollset_set->fd_capacity * sizeof(*pollset_set->fds)));
|
@@ -1306,8 +1316,7 @@ static void pollset_set_del_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) {
|
|
1306
1316
|
for (i = 0; i < pollset_set->fd_count; i++) {
|
1307
1317
|
if (pollset_set->fds[i] == fd) {
|
1308
1318
|
pollset_set->fd_count--;
|
1309
|
-
|
1310
|
-
pollset_set->fds[pollset_set->fd_count]);
|
1319
|
+
std::swap(pollset_set->fds[i], pollset_set->fds[pollset_set->fd_count]);
|
1311
1320
|
GRPC_FD_UNREF(fd, "pollset_set");
|
1312
1321
|
break;
|
1313
1322
|
}
|
@@ -17,38 +17,61 @@
|
|
17
17
|
#include <grpc/event_engine/event_engine.h>
|
18
18
|
|
19
19
|
#include "src/core/lib/iomgr/closure.h"
|
20
|
+
#include "src/core/lib/iomgr/event_engine/closure.h"
|
20
21
|
#include "src/core/lib/iomgr/event_engine/pollset.h"
|
21
22
|
#include "src/core/lib/transport/error_utils.h"
|
22
23
|
|
23
24
|
namespace grpc_event_engine {
|
24
25
|
namespace experimental {
|
25
26
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
grpc_error_add_child(error, absl_status_to_grpc_error(status));
|
27
|
+
namespace {
|
28
|
+
|
29
|
+
void RunClosure(grpc_closure* closure, grpc_error_handle error) {
|
30
|
+
GPR_ASSERT(closure != nullptr);
|
31
31
|
#ifndef NDEBUG
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
closure->scheduled = false;
|
33
|
+
if (grpc_trace_closure.enabled()) {
|
34
|
+
gpr_log(GPR_DEBUG,
|
35
|
+
"EventEngine: running closure %p: created [%s:%d]: %s [%s:%d]",
|
36
|
+
closure, closure->file_created, closure->line_created,
|
37
|
+
closure->run ? "run" : "scheduled", closure->file_initiated,
|
38
|
+
closure->line_initiated);
|
39
|
+
}
|
40
40
|
#endif
|
41
|
-
|
41
|
+
closure->cb(closure->cb_arg, error);
|
42
42
|
#ifndef NDEBUG
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
if (grpc_trace_closure.enabled()) {
|
44
|
+
gpr_log(GPR_DEBUG, "EventEngine: closure %p finished", closure);
|
45
|
+
}
|
46
46
|
#endif
|
47
|
-
|
47
|
+
}
|
48
|
+
|
49
|
+
} // namespace
|
50
|
+
|
51
|
+
std::function<void(absl::Status)> GrpcClosureToStatusCallback(
|
52
|
+
grpc_closure* closure) {
|
53
|
+
return [closure](absl::Status status) {
|
54
|
+
RunClosure(closure, absl_status_to_grpc_error(status));
|
55
|
+
grpc_pollset_ee_broadcast_event();
|
56
|
+
};
|
57
|
+
}
|
58
|
+
|
59
|
+
std::function<void()> GrpcClosureToCallback(grpc_closure* closure) {
|
60
|
+
return [closure]() {
|
61
|
+
RunClosure(closure, GRPC_ERROR_NONE);
|
62
|
+
grpc_pollset_ee_broadcast_event();
|
63
|
+
};
|
64
|
+
}
|
65
|
+
|
66
|
+
std::function<void()> GrpcClosureToCallback(grpc_closure* closure,
|
67
|
+
grpc_error_handle error) {
|
68
|
+
return [closure, error]() {
|
69
|
+
RunClosure(closure, error);
|
48
70
|
grpc_pollset_ee_broadcast_event();
|
49
71
|
};
|
50
72
|
}
|
51
73
|
|
52
74
|
} // namespace experimental
|
53
75
|
} // namespace grpc_event_engine
|
76
|
+
|
54
77
|
#endif // GRPC_USE_EVENT_ENGINE
|
@@ -24,7 +24,16 @@
|
|
24
24
|
namespace grpc_event_engine {
|
25
25
|
namespace experimental {
|
26
26
|
|
27
|
-
|
27
|
+
/// Creates a callback that takes an error status argument.
|
28
|
+
std::function<void(absl::Status)> GrpcClosureToStatusCallback(
|
29
|
+
grpc_closure* closure);
|
30
|
+
|
31
|
+
/// Create a callback that *does not* take an error status argument.
|
32
|
+
std::function<void()> GrpcClosureToCallback(grpc_closure* closure);
|
33
|
+
|
34
|
+
/// Creates a callback that *does not* take an error status argument.
|
35
|
+
/// This version has a pre-bound error.
|
36
|
+
std::function<void()> GrpcClosureToCallback(grpc_closure* closure,
|
28
37
|
grpc_error_handle error);
|
29
38
|
|
30
39
|
} // namespace experimental
|
@@ -96,12 +96,12 @@ void endpoint_delete_from_pollset_set(grpc_endpoint* /* ep */,
|
|
96
96
|
/// and will return some kind of sane default (empty strings, nullptrs, etc). It
|
97
97
|
/// is the caller's responsibility to ensure that calls to endpoint_shutdown are
|
98
98
|
/// synchronized.
|
99
|
-
void endpoint_shutdown(grpc_endpoint* ep,
|
99
|
+
void endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
100
100
|
auto* eeep = reinterpret_cast<grpc_event_engine_endpoint*>(ep);
|
101
101
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
102
|
-
|
102
|
+
std::string str = grpc_error_std_string(why);
|
103
103
|
gpr_log(GPR_INFO, "TCP Endpoint %p shutdown why=%s", eeep->endpoint.get(),
|
104
|
-
str);
|
104
|
+
str.c_str());
|
105
105
|
}
|
106
106
|
eeep->endpoint.reset();
|
107
107
|
}
|
@@ -60,7 +60,7 @@ bool iomgr_platform_is_any_background_poller_thread(void) {
|
|
60
60
|
}
|
61
61
|
|
62
62
|
bool iomgr_platform_add_closure_to_background_poller(
|
63
|
-
grpc_closure* /* closure */,
|
63
|
+
grpc_closure* /* closure */, grpc_error_handle /* error */) {
|
64
64
|
return false;
|
65
65
|
}
|
66
66
|
|
@@ -40,15 +40,16 @@ void pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
|
|
40
40
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
|
41
41
|
}
|
42
42
|
void pollset_destroy(grpc_pollset* pollset) {}
|
43
|
-
|
44
|
-
|
43
|
+
grpc_error_handle pollset_work(grpc_pollset* pollset,
|
44
|
+
grpc_pollset_worker** worker,
|
45
|
+
grpc_millis deadline) {
|
45
46
|
(void)worker;
|
46
47
|
gpr_cv_wait(&g_cv, &g_mu,
|
47
48
|
grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME));
|
48
49
|
return GRPC_ERROR_NONE;
|
49
50
|
}
|
50
|
-
|
51
|
-
|
51
|
+
grpc_error_handle pollset_kick(grpc_pollset* pollset,
|
52
|
+
grpc_pollset_worker* specific_worker) {
|
52
53
|
(void)pollset;
|
53
54
|
(void)specific_worker;
|
54
55
|
return GRPC_ERROR_NONE;
|
@@ -79,13 +79,15 @@ void resolve_address(const char* addr, const char* default_port,
|
|
79
79
|
grpc_pollset_set* /* interested_parties */,
|
80
80
|
grpc_closure* on_done,
|
81
81
|
grpc_resolved_addresses** addresses) {
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
82
|
+
std::unique_ptr<EventEngine::DNSResolver> dns_resolver =
|
83
|
+
grpc_iomgr_event_engine()->GetDNSResolver();
|
84
|
+
if (dns_resolver == nullptr) {
|
85
|
+
grpc_core::ExecCtx::Run(
|
86
|
+
DEBUG_LOCATION, on_done,
|
87
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed to get DNS Resolver."));
|
86
88
|
return;
|
87
89
|
}
|
88
|
-
new DnsRequest(std::move(
|
90
|
+
new DnsRequest(std::move(dns_resolver), addr, default_port, on_done,
|
89
91
|
addresses);
|
90
92
|
}
|
91
93
|
|
@@ -93,8 +95,9 @@ void blocking_handle_async_resolve_done(void* arg, grpc_error_handle error) {
|
|
93
95
|
static_cast<Promise<grpc_error_handle>*>(arg)->Set(std::move(error));
|
94
96
|
}
|
95
97
|
|
96
|
-
|
97
|
-
|
98
|
+
grpc_error_handle blocking_resolve_address(
|
99
|
+
const char* name, const char* default_port,
|
100
|
+
grpc_resolved_addresses** addresses) {
|
98
101
|
grpc_closure on_done;
|
99
102
|
Promise<grpc_error_handle> evt;
|
100
103
|
GRPC_CLOSURE_INIT(&on_done, blocking_handle_async_resolve_done, &evt,
|
@@ -35,7 +35,7 @@ extern grpc_core::TraceFlag grpc_tcp_trace;
|
|
35
35
|
namespace {
|
36
36
|
using ::grpc_event_engine::experimental::ChannelArgsEndpointConfig;
|
37
37
|
using ::grpc_event_engine::experimental::EventEngine;
|
38
|
-
using ::grpc_event_engine::experimental::
|
38
|
+
using ::grpc_event_engine::experimental::GrpcClosureToStatusCallback;
|
39
39
|
using ::grpc_event_engine::experimental::SliceAllocator;
|
40
40
|
using ::grpc_event_engine::experimental::SliceAllocatorFactory;
|
41
41
|
using ::grpc_event_engine::experimental::SliceBuffer;
|
@@ -164,7 +164,7 @@ void tcp_connect(grpc_closure* on_connect, grpc_endpoint** endpoint,
|
|
164
164
|
}
|
165
165
|
}
|
166
166
|
|
167
|
-
|
167
|
+
grpc_error_handle tcp_server_create(
|
168
168
|
grpc_closure* shutdown_complete, const grpc_channel_args* args,
|
169
169
|
grpc_slice_allocator_factory* slice_allocator_factory,
|
170
170
|
grpc_tcp_server** server) {
|
@@ -175,7 +175,8 @@ grpc_error* tcp_server_create(
|
|
175
175
|
EventEngine* event_engine = grpc_iomgr_event_engine();
|
176
176
|
absl::StatusOr<std::unique_ptr<EventEngine::Listener>> listener =
|
177
177
|
event_engine->CreateListener(
|
178
|
-
[server](std::unique_ptr<EventEngine::Endpoint> ee_endpoint
|
178
|
+
[server](std::unique_ptr<EventEngine::Endpoint> ee_endpoint,
|
179
|
+
const SliceAllocator& /*slice_allocator*/) {
|
179
180
|
grpc_core::ExecCtx exec_ctx;
|
180
181
|
GPR_ASSERT((*server)->on_accept_internal != nullptr);
|
181
182
|
grpc_event_engine_endpoint* iomgr_endpoint =
|
@@ -191,8 +192,8 @@ grpc_error* tcp_server_create(
|
|
191
192
|
exec_ctx.Flush();
|
192
193
|
grpc_pollset_ee_broadcast_event();
|
193
194
|
},
|
194
|
-
|
195
|
-
|
195
|
+
GrpcClosureToStatusCallback(shutdown_complete), endpoint_config,
|
196
|
+
std::move(ee_slice_allocator_factory));
|
196
197
|
if (!listener.ok()) {
|
197
198
|
return absl_status_to_grpc_error(listener.status());
|
198
199
|
}
|
@@ -210,9 +211,9 @@ void tcp_server_start(grpc_tcp_server* server,
|
|
210
211
|
GPR_ASSERT(server->listener->Start().ok());
|
211
212
|
}
|
212
213
|
|
213
|
-
|
214
|
-
|
215
|
-
|
214
|
+
grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
|
215
|
+
const grpc_resolved_address* addr,
|
216
|
+
int* out_port) {
|
216
217
|
EventEngine::ResolvedAddress ra(reinterpret_cast<const sockaddr*>(addr->addr),
|
217
218
|
addr->len);
|
218
219
|
auto port = s->listener->Bind(ra);
|
@@ -19,6 +19,7 @@
|
|
19
19
|
#include "src/core/lib/iomgr/error.h"
|
20
20
|
#include "src/core/lib/iomgr/event_engine/closure.h"
|
21
21
|
#include "src/core/lib/iomgr/event_engine/iomgr.h"
|
22
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
22
23
|
#include "src/core/lib/iomgr/timer.h"
|
23
24
|
#include "src/core/lib/surface/init.h"
|
24
25
|
#include "src/core/lib/transport/error_utils.h"
|
@@ -32,12 +33,16 @@ void timer_init(grpc_timer* timer, grpc_millis deadline,
|
|
32
33
|
timer->ee_task_handle = grpc_iomgr_event_engine()->RunAt(
|
33
34
|
grpc_core::ToAbslTime(
|
34
35
|
grpc_millis_to_timespec(deadline, GPR_CLOCK_REALTIME)),
|
35
|
-
GrpcClosureToCallback(closure
|
36
|
+
GrpcClosureToCallback(closure));
|
37
|
+
timer->closure = closure;
|
36
38
|
}
|
37
39
|
|
38
40
|
void timer_cancel(grpc_timer* timer) {
|
39
41
|
auto handle = timer->ee_task_handle;
|
40
|
-
grpc_iomgr_event_engine()->
|
42
|
+
if (!grpc_iomgr_event_engine()->Cancel(handle)) {
|
43
|
+
grpc_core::ExecCtx::Run(DEBUG_LOCATION, timer->closure,
|
44
|
+
GRPC_ERROR_CANCELLED);
|
45
|
+
}
|
41
46
|
}
|
42
47
|
|
43
48
|
/* Internal API */
|
@@ -20,14 +20,11 @@
|
|
20
20
|
|
21
21
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
22
22
|
|
23
|
-
#include <grpc/event_engine/event_engine.h>
|
24
23
|
#include <grpc/support/log.h>
|
25
24
|
#include <grpc/support/sync.h>
|
26
25
|
|
27
|
-
#include "src/core/lib/gprpp/thd.h"
|
28
26
|
#include "src/core/lib/iomgr/combiner.h"
|
29
|
-
#include "src/core/lib/iomgr/
|
30
|
-
#include "src/core/lib/iomgr/event_engine/iomgr.h"
|
27
|
+
#include "src/core/lib/iomgr/error.h"
|
31
28
|
#include "src/core/lib/profiling/timers.h"
|
32
29
|
|
33
30
|
static void exec_ctx_run(grpc_closure* closure, grpc_error_handle error) {
|
@@ -50,13 +47,8 @@ static void exec_ctx_run(grpc_closure* closure, grpc_error_handle error) {
|
|
50
47
|
}
|
51
48
|
|
52
49
|
static void exec_ctx_sched(grpc_closure* closure, grpc_error_handle error) {
|
53
|
-
#if defined(GRPC_USE_EVENT_ENGINE) && \
|
54
|
-
defined(GRPC_EVENT_ENGINE_REPLACE_EXEC_CTX)
|
55
|
-
grpc_iomgr_event_engine()->Run(GrpcClosureToCallback(closure, error), {});
|
56
|
-
#else
|
57
50
|
grpc_closure_list_append(grpc_core::ExecCtx::Get()->closure_list(), closure,
|
58
51
|
error);
|
59
|
-
#endif
|
60
52
|
}
|
61
53
|
|
62
54
|
static gpr_timespec g_start_time;
|
@@ -67,7 +67,7 @@ inline void* InfLenFIFOQueue::PopFront() {
|
|
67
67
|
|
68
68
|
InfLenFIFOQueue::Node* InfLenFIFOQueue::AllocateNodes(int num) {
|
69
69
|
num_nodes_ = num_nodes_ + num;
|
70
|
-
Node* new_chunk =
|
70
|
+
Node* new_chunk = new Node[num];
|
71
71
|
new_chunk[0].next = &new_chunk[1];
|
72
72
|
new_chunk[num - 1].prev = &new_chunk[num - 2];
|
73
73
|
for (int i = 1; i < num - 1; ++i) {
|
@@ -79,8 +79,7 @@ InfLenFIFOQueue::Node* InfLenFIFOQueue::AllocateNodes(int num) {
|
|
79
79
|
|
80
80
|
InfLenFIFOQueue::InfLenFIFOQueue() {
|
81
81
|
delete_list_size_ = kDeleteListInitSize;
|
82
|
-
delete_list_ =
|
83
|
-
static_cast<Node**>(gpr_zalloc(sizeof(Node*) * delete_list_size_));
|
82
|
+
delete_list_ = new Node*[delete_list_size_];
|
84
83
|
|
85
84
|
Node* new_chunk = AllocateNodes(kQueueInitNumNodes);
|
86
85
|
delete_list_[delete_list_count_++] = new_chunk;
|
@@ -95,9 +94,9 @@ InfLenFIFOQueue::InfLenFIFOQueue() {
|
|
95
94
|
InfLenFIFOQueue::~InfLenFIFOQueue() {
|
96
95
|
GPR_ASSERT(count_.load(std::memory_order_relaxed) == 0);
|
97
96
|
for (size_t i = 0; i < delete_list_count_; ++i) {
|
98
|
-
|
97
|
+
delete[] delete_list_[i];
|
99
98
|
}
|
100
|
-
|
99
|
+
delete[] delete_list_;
|
101
100
|
}
|
102
101
|
|
103
102
|
void InfLenFIFOQueue::Put(void* elem) {
|
@@ -112,8 +111,7 @@ void InfLenFIFOQueue::Put(void* elem) {
|
|
112
111
|
// Expands delete list on full.
|
113
112
|
if (delete_list_count_ == delete_list_size_) {
|
114
113
|
delete_list_size_ = delete_list_size_ * 2;
|
115
|
-
delete_list_ =
|
116
|
-
gpr_realloc(delete_list_, sizeof(Node*) * delete_list_size_));
|
114
|
+
delete_list_ = new Node*[delete_list_size_];
|
117
115
|
}
|
118
116
|
new_chunk[0].prev = queue_tail_->prev;
|
119
117
|
new_chunk[curr_count - 1].next = queue_head_;
|
@@ -74,15 +74,10 @@ class InfLenFIFOQueue : public MPMCQueueInterface {
|
|
74
74
|
int count() const override { return count_.load(std::memory_order_relaxed); }
|
75
75
|
|
76
76
|
struct Node {
|
77
|
-
Node* next; // Linking
|
78
|
-
Node* prev;
|
79
|
-
void* content;
|
77
|
+
Node* next = nullptr; // Linking
|
78
|
+
Node* prev = nullptr;
|
79
|
+
void* content = nullptr; // Points to actual element
|
80
80
|
gpr_timespec insert_time; // Time for stats
|
81
|
-
|
82
|
-
Node() {
|
83
|
-
next = prev = nullptr;
|
84
|
-
content = nullptr;
|
85
|
-
}
|
86
81
|
};
|
87
82
|
|
88
83
|
// For test purpose only. Returns number of nodes allocated in queue.
|
@@ -27,12 +27,11 @@
|
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
#include <grpc/support/sync.h>
|
29
29
|
|
30
|
-
#include "src/core/lib/debug/stats.h"
|
31
30
|
#include "src/core/lib/gpr/tls.h"
|
32
31
|
#include "src/core/lib/gpr/useful.h"
|
33
32
|
#include "src/core/lib/gprpp/memory.h"
|
34
33
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
35
|
-
#include "src/core/lib/iomgr/
|
34
|
+
#include "src/core/lib/iomgr/iomgr_internal.h"
|
36
35
|
|
37
36
|
#define MAX_DEPTH 2
|
38
37
|
|
@@ -92,7 +91,7 @@ TraceFlag executor_trace(false, "executor");
|
|
92
91
|
Executor::Executor(const char* name) : name_(name) {
|
93
92
|
adding_thread_lock_ = GPR_SPINLOCK_STATIC_INITIALIZER;
|
94
93
|
gpr_atm_rel_store(&num_threads_, 0);
|
95
|
-
max_threads_ =
|
94
|
+
max_threads_ = std::max(1u, 2 * gpr_cpu_num_cores());
|
96
95
|
}
|
97
96
|
|
98
97
|
void Executor::Init() { SetThreading(true); }
|
@@ -204,7 +203,7 @@ void Executor::SetThreading(bool threading) {
|
|
204
203
|
// an application.
|
205
204
|
// TODO(guantaol): create another method to finish all the pending closures
|
206
205
|
// registered in the background poller by grpc_core::Executor.
|
207
|
-
|
206
|
+
grpc_iomgr_platform_shutdown_background_closure();
|
208
207
|
}
|
209
208
|
|
210
209
|
EXECUTOR_TRACE("(%s) SetThreading(%d) done", name_, threading);
|
@@ -237,7 +236,6 @@ void Executor::ThreadMain(void* arg) {
|
|
237
236
|
break;
|
238
237
|
}
|
239
238
|
|
240
|
-
GRPC_STATS_INC_EXECUTOR_QUEUE_DRAINED();
|
241
239
|
grpc_closure_list closures = ts->elems;
|
242
240
|
ts->elems = GRPC_CLOSURE_LIST_INIT;
|
243
241
|
gpr_mu_unlock(&ts->mu);
|
@@ -254,11 +252,6 @@ void Executor::ThreadMain(void* arg) {
|
|
254
252
|
void Executor::Enqueue(grpc_closure* closure, grpc_error_handle error,
|
255
253
|
bool is_short) {
|
256
254
|
bool retry_push;
|
257
|
-
if (is_short) {
|
258
|
-
GRPC_STATS_INC_EXECUTOR_SCHEDULED_SHORT_ITEMS();
|
259
|
-
} else {
|
260
|
-
GRPC_STATS_INC_EXECUTOR_SCHEDULED_LONG_ITEMS();
|
261
|
-
}
|
262
255
|
|
263
256
|
do {
|
264
257
|
retry_push = false;
|
@@ -279,16 +272,14 @@ void Executor::Enqueue(grpc_closure* closure, grpc_error_handle error,
|
|
279
272
|
return;
|
280
273
|
}
|
281
274
|
|
282
|
-
if (
|
275
|
+
if (grpc_iomgr_platform_add_closure_to_background_poller(closure, error)) {
|
283
276
|
return;
|
284
277
|
}
|
285
278
|
|
286
279
|
ThreadState* ts = g_this_thread_state;
|
287
280
|
if (ts == nullptr) {
|
288
|
-
ts = &thd_state_[
|
289
|
-
|
290
|
-
} else {
|
291
|
-
GRPC_STATS_INC_EXECUTOR_SCHEDULED_TO_SELF();
|
281
|
+
ts = &thd_state_[grpc_core::HashPointer(grpc_core::ExecCtx::Get(),
|
282
|
+
cur_thread_count)];
|
292
283
|
}
|
293
284
|
|
294
285
|
ThreadState* orig_ts = ts;
|
@@ -341,7 +332,6 @@ void Executor::Enqueue(grpc_closure* closure, grpc_error_handle error,
|
|
341
332
|
// - Note that gpr_cv_signal() won't immediately wakeup the thread. That
|
342
333
|
// happens after we release the mutex &ts->mu a few lines below
|
343
334
|
if (grpc_closure_list_empty(ts->elems) && !ts->shutdown) {
|
344
|
-
GRPC_STATS_INC_EXECUTOR_WAKEUP_INITIATED();
|
345
335
|
gpr_cv_signal(&ts->cv);
|
346
336
|
}
|
347
337
|
|
@@ -372,10 +362,6 @@ void Executor::Enqueue(grpc_closure* closure, grpc_error_handle error,
|
|
372
362
|
}
|
373
363
|
gpr_spinlock_unlock(&adding_thread_lock_);
|
374
364
|
}
|
375
|
-
|
376
|
-
if (retry_push) {
|
377
|
-
GRPC_STATS_INC_EXECUTOR_PUSH_RETRIES();
|
378
|
-
}
|
379
365
|
} while (retry_push);
|
380
366
|
}
|
381
367
|
|
data/src/core/lib/iomgr/iomgr.cc
CHANGED
@@ -53,7 +53,9 @@ static bool g_grpc_abort_on_leaks;
|
|
53
53
|
|
54
54
|
void grpc_iomgr_init() {
|
55
55
|
grpc_core::ExecCtx exec_ctx;
|
56
|
-
|
56
|
+
if (!grpc_have_determined_iomgr_platform()) {
|
57
|
+
grpc_set_default_iomgr_platform();
|
58
|
+
}
|
57
59
|
g_shutdown = 0;
|
58
60
|
gpr_mu_init(&g_mu);
|
59
61
|
gpr_cv_init(&g_rcv);
|
@@ -22,19 +22,14 @@
|
|
22
22
|
|
23
23
|
#include <stddef.h>
|
24
24
|
|
25
|
-
#include "src/core/lib/iomgr/timer.h"
|
26
|
-
#include "src/core/lib/iomgr/timer_manager.h"
|
27
|
-
|
28
25
|
static grpc_iomgr_platform_vtable* iomgr_platform_vtable = nullptr;
|
29
26
|
|
30
|
-
|
31
|
-
iomgr_platform_vtable
|
27
|
+
bool grpc_have_determined_iomgr_platform() {
|
28
|
+
return iomgr_platform_vtable != nullptr;
|
32
29
|
}
|
33
30
|
|
34
|
-
void
|
35
|
-
|
36
|
-
grpc_set_default_iomgr_platform();
|
37
|
-
}
|
31
|
+
void grpc_set_iomgr_platform_vtable(grpc_iomgr_platform_vtable* vtable) {
|
32
|
+
iomgr_platform_vtable = vtable;
|
38
33
|
}
|
39
34
|
|
40
35
|
void grpc_iomgr_platform_init() { iomgr_platform_vtable->init(); }
|
@@ -23,7 +23,8 @@
|
|
23
23
|
|
24
24
|
#include <stdbool.h>
|
25
25
|
|
26
|
-
#include "src/core/lib/iomgr/
|
26
|
+
#include "src/core/lib/iomgr/closure.h"
|
27
|
+
#include "src/core/lib/iomgr/error.h"
|
27
28
|
|
28
29
|
typedef struct grpc_iomgr_object {
|
29
30
|
char* name;
|
@@ -44,7 +45,7 @@ typedef struct grpc_iomgr_platform_vtable {
|
|
44
45
|
void grpc_iomgr_register_object(grpc_iomgr_object* obj, const char* name);
|
45
46
|
void grpc_iomgr_unregister_object(grpc_iomgr_object* obj);
|
46
47
|
|
47
|
-
|
48
|
+
bool grpc_have_determined_iomgr_platform();
|
48
49
|
|
49
50
|
void grpc_set_iomgr_platform_vtable(grpc_iomgr_platform_vtable* vtable);
|
50
51
|
|
@@ -71,8 +71,8 @@ end:
|
|
71
71
|
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
72
72
|
"Failed to load file", &error, 1),
|
73
73
|
GRPC_ERROR_STR_FILENAME,
|
74
|
-
|
75
|
-
|
74
|
+
|
75
|
+
filename);
|
76
76
|
GRPC_ERROR_UNREF(error);
|
77
77
|
error = error_out;
|
78
78
|
}
|