grpc 1.41.1 → 1.42.0.pre1
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 +55 -43
- 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/src/crypto/asn1/a_bool.c +20 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +104 -114
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- 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 +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- 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/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +72 -45
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +479 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -564
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +0 -1
- 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 +78 -66
- 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
|
}
|