grpc 1.41.0 → 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 +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 +83 -70
- 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
@@ -77,7 +77,11 @@ void LockfreeEvent::DestroyEvent() {
|
|
77
77
|
do {
|
78
78
|
curr = gpr_atm_no_barrier_load(&state_);
|
79
79
|
if (curr & kShutdownBit) {
|
80
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
81
|
+
internal::StatusFreeHeapPtr(curr & ~kShutdownBit);
|
82
|
+
#else
|
80
83
|
GRPC_ERROR_UNREF((grpc_error_handle)(curr & ~kShutdownBit));
|
84
|
+
#endif
|
81
85
|
} else {
|
82
86
|
GPR_ASSERT(curr == kClosureNotReady || curr == kClosureReady);
|
83
87
|
}
|
@@ -139,8 +143,13 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
|
|
139
143
|
contains a pointer to the shutdown-error). If the fd is shutdown,
|
140
144
|
schedule the closure with the shutdown error */
|
141
145
|
if ((curr & kShutdownBit) > 0) {
|
146
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
147
|
+
grpc_error_handle shutdown_err =
|
148
|
+
internal::StatusGetFromHeapPtr(curr & ~kShutdownBit);
|
149
|
+
#else
|
142
150
|
grpc_error_handle shutdown_err =
|
143
151
|
reinterpret_cast<grpc_error_handle>(curr & ~kShutdownBit);
|
152
|
+
#endif
|
144
153
|
ExecCtx::Run(DEBUG_LOCATION, closure,
|
145
154
|
GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
146
155
|
"FD Shutdown", &shutdown_err, 1));
|
@@ -160,7 +169,12 @@ void LockfreeEvent::NotifyOn(grpc_closure* closure) {
|
|
160
169
|
}
|
161
170
|
|
162
171
|
bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
|
172
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
173
|
+
intptr_t status_ptr = internal::StatusAllocHeapPtr(shutdown_error);
|
174
|
+
gpr_atm new_state = status_ptr | kShutdownBit;
|
175
|
+
#else
|
163
176
|
gpr_atm new_state = reinterpret_cast<gpr_atm>(shutdown_error) | kShutdownBit;
|
177
|
+
#endif
|
164
178
|
|
165
179
|
while (true) {
|
166
180
|
gpr_atm curr = gpr_atm_no_barrier_load(&state_);
|
@@ -184,7 +198,11 @@ bool LockfreeEvent::SetShutdown(grpc_error_handle shutdown_error) {
|
|
184
198
|
|
185
199
|
/* If fd is already shutdown, we are done */
|
186
200
|
if ((curr & kShutdownBit) > 0) {
|
201
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
202
|
+
internal::StatusFreeHeapPtr(status_ptr);
|
203
|
+
#else
|
187
204
|
GRPC_ERROR_UNREF(shutdown_error);
|
205
|
+
#endif
|
188
206
|
return false;
|
189
207
|
}
|
190
208
|
|
@@ -76,7 +76,7 @@ static grpc_error_handle pollset_work(grpc_pollset* pollset,
|
|
76
76
|
// control back to the application
|
77
77
|
grpc_core::ExecCtx* curr = grpc_core::ExecCtx::Get();
|
78
78
|
grpc_core::ExecCtx::Set(nullptr);
|
79
|
-
|
79
|
+
grpc_error_handle err = poller_vtable->poll(static_cast<size_t>(timeout));
|
80
80
|
grpc_core::ExecCtx::Set(curr);
|
81
81
|
grpc_core::ExecCtx::Get()->InvalidateNow();
|
82
82
|
if (grpc_core::ExecCtx::Get()->HasWork()) {
|
@@ -57,7 +57,7 @@ static grpc_error_handle posix_blocking_resolve_address(
|
|
57
57
|
if (host.empty()) {
|
58
58
|
err = grpc_error_set_str(
|
59
59
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
|
60
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
60
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
61
61
|
goto done;
|
62
62
|
}
|
63
63
|
|
@@ -65,7 +65,7 @@ static grpc_error_handle posix_blocking_resolve_address(
|
|
65
65
|
if (default_port == nullptr) {
|
66
66
|
err = grpc_error_set_str(
|
67
67
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
|
68
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
68
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
69
69
|
goto done;
|
70
70
|
}
|
71
71
|
port = default_port;
|
@@ -101,11 +101,9 @@ static grpc_error_handle posix_blocking_resolve_address(
|
|
101
101
|
grpc_error_set_int(
|
102
102
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING(gai_strerror(s)),
|
103
103
|
GRPC_ERROR_INT_ERRNO, s),
|
104
|
-
GRPC_ERROR_STR_OS_ERROR,
|
105
|
-
|
106
|
-
|
107
|
-
grpc_slice_from_static_string("getaddrinfo")),
|
108
|
-
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
|
104
|
+
GRPC_ERROR_STR_OS_ERROR, gai_strerror(s)),
|
105
|
+
GRPC_ERROR_STR_SYSCALL, "getaddrinfo"),
|
106
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, name);
|
109
107
|
goto done;
|
110
108
|
}
|
111
109
|
|
@@ -305,11 +305,12 @@ static void rq_step_sched(grpc_resource_quota* resource_quota) {
|
|
305
305
|
static void rq_update_estimate(grpc_resource_quota* resource_quota) {
|
306
306
|
gpr_atm memory_usage_estimation = MEMORY_USAGE_ESTIMATION_MAX;
|
307
307
|
if (resource_quota->size != 0) {
|
308
|
-
memory_usage_estimation =
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
308
|
+
memory_usage_estimation = grpc_core::Clamp(
|
309
|
+
static_cast<gpr_atm>(
|
310
|
+
(1.0 - (static_cast<double>(resource_quota->free_pool)) /
|
311
|
+
(static_cast<double>(resource_quota->size))) *
|
312
|
+
MEMORY_USAGE_ESTIMATION_MAX),
|
313
|
+
gpr_atm(0), gpr_atm(MEMORY_USAGE_ESTIMATION_MAX));
|
313
314
|
}
|
314
315
|
gpr_atm_no_barrier_store(&resource_quota->memory_usage_estimation,
|
315
316
|
memory_usage_estimation);
|
@@ -729,7 +730,7 @@ void grpc_resource_quota_resize(grpc_resource_quota* resource_quota,
|
|
729
730
|
a->resource_quota = grpc_resource_quota_ref_internal(resource_quota);
|
730
731
|
a->size = static_cast<int64_t>(size);
|
731
732
|
gpr_atm_no_barrier_store(&resource_quota->last_size,
|
732
|
-
(gpr_atm)
|
733
|
+
(gpr_atm)std::min((size_t)GPR_ATM_MAX, size));
|
733
734
|
GRPC_CLOSURE_INIT(&a->closure, rq_resize, a, grpc_schedule_on_exec_ctx);
|
734
735
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, &a->closure, GRPC_ERROR_NONE);
|
735
736
|
}
|
@@ -762,7 +763,7 @@ static void rq_destroy(void* rq) {
|
|
762
763
|
grpc_resource_quota_unref_internal(static_cast<grpc_resource_quota*>(rq));
|
763
764
|
}
|
764
765
|
|
765
|
-
static int rq_cmp(void* a, void* b) { return
|
766
|
+
static int rq_cmp(void* a, void* b) { return grpc_core::QsortCompare(a, b); }
|
766
767
|
|
767
768
|
const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable(void) {
|
768
769
|
static const grpc_arg_pointer_vtable vtable = {rq_copy, rq_destroy, rq_cmp};
|
@@ -1035,10 +1036,11 @@ static size_t grpc_slice_allocator_adjust_allocation_length(
|
|
1035
1036
|
size_t target =
|
1036
1037
|
requested_length * (pressure > 0.8 ? (1.0 - pressure) / 0.2 : 1.0);
|
1037
1038
|
// Target will be some multiple of 8 bytes, rounded up
|
1038
|
-
target =
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1039
|
+
target =
|
1040
|
+
(static_cast<size_t>(grpc_core::Clamp(target, slice_allocator->min_length,
|
1041
|
+
slice_allocator->max_length)) +
|
1042
|
+
255) &
|
1043
|
+
~static_cast<size_t>(255);
|
1042
1044
|
// Don't use more than 1/16th of the overall resource quota for a single
|
1043
1045
|
// read alloc
|
1044
1046
|
size_t rqmax = grpc_resource_quota_peek_size(
|
@@ -47,11 +47,11 @@ int grpc_socket_factory_bind(grpc_socket_factory* factory, int sockfd,
|
|
47
47
|
|
48
48
|
int grpc_socket_factory_compare(grpc_socket_factory* a,
|
49
49
|
grpc_socket_factory* b) {
|
50
|
-
int c =
|
50
|
+
int c = grpc_core::QsortCompare(a, b);
|
51
51
|
if (c != 0) {
|
52
52
|
grpc_socket_factory* sma = a;
|
53
53
|
grpc_socket_factory* smb = b;
|
54
|
-
c =
|
54
|
+
c = grpc_core::QsortCompare(sma->vtable, smb->vtable);
|
55
55
|
if (c == 0) {
|
56
56
|
c = sma->vtable->compare(sma, smb);
|
57
57
|
}
|
@@ -56,11 +56,11 @@ bool grpc_socket_mutator_mutate_fd(grpc_socket_mutator* mutator, int fd,
|
|
56
56
|
|
57
57
|
int grpc_socket_mutator_compare(grpc_socket_mutator* a,
|
58
58
|
grpc_socket_mutator* b) {
|
59
|
-
int c =
|
59
|
+
int c = grpc_core::QsortCompare(a, b);
|
60
60
|
if (c != 0) {
|
61
61
|
grpc_socket_mutator* sma = a;
|
62
62
|
grpc_socket_mutator* smb = b;
|
63
|
-
c =
|
63
|
+
c = grpc_core::QsortCompare(sma->vtable, smb->vtable);
|
64
64
|
if (c == 0) {
|
65
65
|
c = sma->vtable->compare(sma, smb);
|
66
66
|
}
|
@@ -443,8 +443,7 @@ static grpc_error_handle error_for_fd(int fd,
|
|
443
443
|
if (fd >= 0) return GRPC_ERROR_NONE;
|
444
444
|
std::string addr_str = grpc_sockaddr_to_string(addr, false);
|
445
445
|
grpc_error_handle err = grpc_error_set_str(
|
446
|
-
GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS,
|
447
|
-
grpc_slice_from_copied_string(addr_str.c_str()));
|
446
|
+
GRPC_OS_ERROR(errno, "socket"), GRPC_ERROR_STR_TARGET_ADDRESS, addr_str);
|
448
447
|
return err;
|
449
448
|
}
|
450
449
|
|
@@ -81,7 +81,8 @@ static void CFStreamConnectCleanup(CFStreamConnect* connect) {
|
|
81
81
|
static void OnAlarm(void* arg, grpc_error_handle error) {
|
82
82
|
CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
|
83
83
|
if (grpc_tcp_trace.enabled()) {
|
84
|
-
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnAlarm, error:%
|
84
|
+
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnAlarm, error:%s", connect,
|
85
|
+
grpc_error_std_string(error).c_str());
|
85
86
|
}
|
86
87
|
gpr_mu_lock(&connect->mu);
|
87
88
|
grpc_closure* closure = connect->closure;
|
@@ -102,7 +103,8 @@ static void OnAlarm(void* arg, grpc_error_handle error) {
|
|
102
103
|
static void OnOpen(void* arg, grpc_error_handle error) {
|
103
104
|
CFStreamConnect* connect = static_cast<CFStreamConnect*>(arg);
|
104
105
|
if (grpc_tcp_trace.enabled()) {
|
105
|
-
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnOpen, error:%
|
106
|
+
gpr_log(GPR_DEBUG, "CLIENT_CONNECT :%p OnOpen, error:%s", connect,
|
107
|
+
grpc_error_std_string(error).c_str());
|
106
108
|
}
|
107
109
|
gpr_mu_lock(&connect->mu);
|
108
110
|
grpc_timer_cancel(&connect->alarm);
|
@@ -135,7 +137,7 @@ static void OnOpen(void* arg, grpc_error_handle error) {
|
|
135
137
|
connect->slice_allocator = nullptr;
|
136
138
|
}
|
137
139
|
} else {
|
138
|
-
GRPC_ERROR_REF(error);
|
140
|
+
(void)GRPC_ERROR_REF(error);
|
139
141
|
}
|
140
142
|
gpr_mu_unlock(&connect->mu);
|
141
143
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
@@ -124,7 +124,7 @@ static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep,
|
|
124
124
|
grpc_custom_socket* socket =
|
125
125
|
static_cast<grpc_custom_socket*>(gpr_malloc(sizeof(grpc_custom_socket)));
|
126
126
|
socket->refs = 2;
|
127
|
-
grpc_custom_socket_vtable->init(socket, GRPC_AF_UNSPEC);
|
127
|
+
(void)grpc_custom_socket_vtable->init(socket, GRPC_AF_UNSPEC);
|
128
128
|
grpc_custom_tcp_connect* connect = new grpc_custom_tcp_connect();
|
129
129
|
connect->closure = closure;
|
130
130
|
connect->endpoint = ep;
|
@@ -142,7 +142,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
142
142
|
grpc_closure* closure = ac->closure;
|
143
143
|
grpc_fd* fd;
|
144
144
|
|
145
|
-
GRPC_ERROR_REF(error);
|
145
|
+
(void)GRPC_ERROR_REF(error);
|
146
146
|
|
147
147
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
|
148
148
|
gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
|
@@ -160,8 +160,7 @@ static void on_writable(void* acp, grpc_error_handle error) {
|
|
160
160
|
gpr_mu_lock(&ac->mu);
|
161
161
|
if (error != GRPC_ERROR_NONE) {
|
162
162
|
error =
|
163
|
-
grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR,
|
164
|
-
grpc_slice_from_static_string("Timeout occurred"));
|
163
|
+
grpc_error_set_str(error, GRPC_ERROR_STR_OS_ERROR, "Timeout occurred");
|
165
164
|
goto finish;
|
166
165
|
}
|
167
166
|
|
@@ -220,23 +219,16 @@ finish:
|
|
220
219
|
fd = nullptr;
|
221
220
|
}
|
222
221
|
done = (--ac->refs == 0);
|
223
|
-
// Create a copy of the data from "ac" to be accessed after the unlock, as
|
224
|
-
// "ac" and its contents may be deallocated by the time they are read.
|
225
|
-
const grpc_slice addr_str_slice = grpc_slice_from_cpp_string(ac->addr_str);
|
226
222
|
gpr_mu_unlock(&ac->mu);
|
227
223
|
if (error != GRPC_ERROR_NONE) {
|
228
|
-
|
224
|
+
std::string str;
|
229
225
|
bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
|
230
226
|
GPR_ASSERT(ret);
|
231
|
-
std::string description =
|
232
|
-
|
227
|
+
std::string description =
|
228
|
+
absl::StrCat("Failed to connect to remote host: ", str);
|
229
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION, description);
|
233
230
|
error =
|
234
|
-
grpc_error_set_str(error,
|
235
|
-
grpc_slice_from_cpp_string(std::move(description)));
|
236
|
-
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
237
|
-
addr_str_slice /* takes ownership */);
|
238
|
-
} else {
|
239
|
-
grpc_slice_unref_internal(addr_str_slice);
|
231
|
+
grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS, ac->addr_str);
|
240
232
|
}
|
241
233
|
if (done) {
|
242
234
|
// This is safe even outside the lock, because "done", the sentinel, is
|
@@ -309,9 +301,8 @@ void grpc_tcp_client_create_from_prepared_fd(
|
|
309
301
|
if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
|
310
302
|
grpc_slice_allocator_destroy(slice_allocator);
|
311
303
|
grpc_error_handle error = GRPC_OS_ERROR(errno, "connect");
|
312
|
-
error = grpc_error_set_str(
|
313
|
-
|
314
|
-
grpc_slice_from_cpp_string(grpc_sockaddr_to_uri(addr)));
|
304
|
+
error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
|
305
|
+
grpc_sockaddr_to_uri(addr));
|
315
306
|
grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
|
316
307
|
grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
|
317
308
|
return;
|
@@ -86,7 +86,7 @@ static void on_connect(void* acp, grpc_error_handle error) {
|
|
86
86
|
GPR_ASSERT(*ep == NULL);
|
87
87
|
grpc_closure* on_done = ac->on_done;
|
88
88
|
|
89
|
-
GRPC_ERROR_REF(error);
|
89
|
+
(void)GRPC_ERROR_REF(error);
|
90
90
|
|
91
91
|
gpr_mu_lock(&ac->mu);
|
92
92
|
grpc_winsocket* socket = ac->socket;
|
@@ -225,8 +225,7 @@ failure:
|
|
225
225
|
grpc_error_handle final_error =
|
226
226
|
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
227
227
|
"Failed to connect", &error, 1),
|
228
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
229
|
-
grpc_slice_from_cpp_string(std::move(target_uri)));
|
228
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, target_uri);
|
230
229
|
GRPC_ERROR_UNREF(error);
|
231
230
|
grpc_slice_allocator_destroy(slice_allocator);
|
232
231
|
if (socket != NULL) {
|
@@ -576,7 +576,7 @@ static void finish_estimate(grpc_tcp* tcp) {
|
|
576
576
|
value */
|
577
577
|
if (tcp->bytes_read_this_round > tcp->target_length * 0.8) {
|
578
578
|
tcp->target_length =
|
579
|
-
|
579
|
+
std::max(2 * tcp->target_length, tcp->bytes_read_this_round);
|
580
580
|
} else {
|
581
581
|
tcp->target_length =
|
582
582
|
0.99 * tcp->target_length + 0.01 * tcp->bytes_read_this_round;
|
@@ -592,8 +592,7 @@ static grpc_error_handle tcp_annotate_error(grpc_error_handle src_error,
|
|
592
592
|
/* All tcp errors are marked with UNAVAILABLE so that application may
|
593
593
|
* choose to retry. */
|
594
594
|
GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
|
595
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
596
|
-
grpc_slice_from_copied_string(tcp->peer_string.c_str()));
|
595
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, tcp->peer_string);
|
597
596
|
}
|
598
597
|
|
599
598
|
static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
|
@@ -1722,8 +1721,8 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
|
|
1722
1721
|
if (tcp_min_read_chunk_size > tcp_max_read_chunk_size) {
|
1723
1722
|
tcp_min_read_chunk_size = tcp_max_read_chunk_size;
|
1724
1723
|
}
|
1725
|
-
tcp_read_chunk_size =
|
1726
|
-
|
1724
|
+
tcp_read_chunk_size = grpc_core::Clamp(
|
1725
|
+
tcp_read_chunk_size, tcp_min_read_chunk_size, tcp_max_read_chunk_size);
|
1727
1726
|
|
1728
1727
|
grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
|
1729
1728
|
tcp_tx_zerocopy_send_bytes_thresh);
|
@@ -28,6 +28,7 @@
|
|
28
28
|
|
29
29
|
#include "src/core/lib/address_utils/sockaddr_utils.h"
|
30
30
|
#include "src/core/lib/channel/channel_args.h"
|
31
|
+
#include "src/core/lib/gprpp/memory.h"
|
31
32
|
#include "src/core/lib/iomgr/error.h"
|
32
33
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
33
34
|
#include "src/core/lib/iomgr/iomgr_custom.h"
|
@@ -303,7 +304,7 @@ static grpc_error_handle add_socket_to_server(grpc_tcp_server* s,
|
|
303
304
|
|
304
305
|
GPR_ASSERT(port >= 0);
|
305
306
|
GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
|
306
|
-
sp =
|
307
|
+
sp = grpc_core::Zalloc<grpc_tcp_listener>();
|
307
308
|
sp->next = nullptr;
|
308
309
|
if (s->head == nullptr) {
|
309
310
|
s->head = sp;
|
@@ -64,8 +64,7 @@ static grpc_error_handle tcp_server_create(
|
|
64
64
|
grpc_closure* shutdown_complete, const grpc_channel_args* args,
|
65
65
|
grpc_slice_allocator_factory* slice_allocator_factory,
|
66
66
|
grpc_tcp_server** server) {
|
67
|
-
grpc_tcp_server* s =
|
68
|
-
static_cast<grpc_tcp_server*>(gpr_zalloc(sizeof(grpc_tcp_server)));
|
67
|
+
grpc_tcp_server* s = grpc_core::Zalloc<grpc_tcp_server>();
|
69
68
|
s->so_reuseport = grpc_is_socket_reuse_port_supported();
|
70
69
|
s->expand_wildcard_addrs = false;
|
71
70
|
for (size_t i = 0; i < (args == nullptr ? 0 : args->num_args); i++) {
|
@@ -236,7 +235,7 @@ static void on_read(void* arg, grpc_error_handle err) {
|
|
236
235
|
}
|
237
236
|
}
|
238
237
|
|
239
|
-
grpc_set_socket_no_sigpipe_if_possible(fd);
|
238
|
+
(void)grpc_set_socket_no_sigpipe_if_possible(fd);
|
240
239
|
|
241
240
|
err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
|
242
241
|
sp->server->channel_args);
|
@@ -595,7 +594,7 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
|
|
595
594
|
close(fd);
|
596
595
|
return;
|
597
596
|
}
|
598
|
-
grpc_set_socket_no_sigpipe_if_possible(fd);
|
597
|
+
(void)grpc_set_socket_no_sigpipe_if_possible(fd);
|
599
598
|
std::string addr_str = grpc_sockaddr_to_uri(&addr);
|
600
599
|
if (grpc_tcp_trace.enabled()) {
|
601
600
|
gpr_log(GPR_INFO, "SERVER_CONNECT: incoming external connection: %s",
|
@@ -230,11 +230,10 @@ static grpc_error_handle prepare_socket(SOCKET sock,
|
|
230
230
|
failure:
|
231
231
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
232
232
|
grpc_error_set_int(
|
233
|
-
grpc_error_set_str(
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
grpc_slice_from_cpp_string(grpc_sockaddr_to_uri(addr))),
|
233
|
+
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
234
|
+
"Failed to prepare server socket", &error, 1),
|
235
|
+
GRPC_ERROR_STR_TARGET_ADDRESS,
|
236
|
+
grpc_sockaddr_to_uri(addr)),
|
238
237
|
GRPC_ERROR_INT_FD, (intptr_t)sock);
|
239
238
|
GRPC_ERROR_UNREF(error);
|
240
239
|
if (sock != INVALID_SOCKET) closesocket(sock);
|
@@ -186,7 +186,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
|
|
186
186
|
gpr_log(GPR_INFO, "TCP:%p on_read", tcp);
|
187
187
|
}
|
188
188
|
|
189
|
-
GRPC_ERROR_REF(error);
|
189
|
+
(void)GRPC_ERROR_REF(error);
|
190
190
|
|
191
191
|
if (error == GRPC_ERROR_NONE) {
|
192
192
|
if (info->wsa_error != 0 && !tcp->shutting_down) {
|
@@ -322,7 +322,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
|
|
322
322
|
gpr_log(GPR_INFO, "TCP:%p on_write", tcp);
|
323
323
|
}
|
324
324
|
|
325
|
-
GRPC_ERROR_REF(error);
|
325
|
+
(void)GRPC_ERROR_REF(error);
|
326
326
|
|
327
327
|
gpr_mu_lock(&tcp->mu);
|
328
328
|
cb = tcp->write_cb;
|
@@ -43,7 +43,7 @@
|
|
43
43
|
|
44
44
|
#define ADD_DEADLINE_SCALE 0.33
|
45
45
|
#define MIN_QUEUE_WINDOW_DURATION 0.01
|
46
|
-
#define MAX_QUEUE_WINDOW_DURATION 1
|
46
|
+
#define MAX_QUEUE_WINDOW_DURATION 1.0
|
47
47
|
|
48
48
|
grpc_core::TraceFlag grpc_timer_trace(false, "timer");
|
49
49
|
grpc_core::TraceFlag grpc_timer_check_trace(false, "timer_check");
|
@@ -105,7 +105,7 @@ static void destroy_timer_ht() {
|
|
105
105
|
}
|
106
106
|
|
107
107
|
static bool is_in_ht(grpc_timer* t) {
|
108
|
-
size_t i =
|
108
|
+
size_t i = grpc_core::HashPointer(t, NUM_HASH_BUCKETS);
|
109
109
|
|
110
110
|
gpr_mu_lock(&g_hash_mu[i]);
|
111
111
|
grpc_timer* p = g_timer_ht[i];
|
@@ -119,7 +119,7 @@ static bool is_in_ht(grpc_timer* t) {
|
|
119
119
|
|
120
120
|
static void add_to_ht(grpc_timer* t) {
|
121
121
|
GPR_ASSERT(!t->hash_table_next);
|
122
|
-
size_t i =
|
122
|
+
size_t i = grpc_core::HashPointer(t, NUM_HASH_BUCKETS);
|
123
123
|
|
124
124
|
gpr_mu_lock(&g_hash_mu[i]);
|
125
125
|
grpc_timer* p = g_timer_ht[i];
|
@@ -144,7 +144,7 @@ static void add_to_ht(grpc_timer* t) {
|
|
144
144
|
}
|
145
145
|
|
146
146
|
static void remove_from_ht(grpc_timer* t) {
|
147
|
-
size_t i =
|
147
|
+
size_t i = grpc_core::HashPointer(t, NUM_HASH_BUCKETS);
|
148
148
|
bool removed = false;
|
149
149
|
|
150
150
|
gpr_mu_lock(&g_hash_mu[i]);
|
@@ -248,7 +248,7 @@ static grpc_millis compute_min_deadline(timer_shard* shard) {
|
|
248
248
|
static void timer_list_init() {
|
249
249
|
uint32_t i;
|
250
250
|
|
251
|
-
g_num_shards =
|
251
|
+
g_num_shards = grpc_core::Clamp(2 * gpr_cpu_num_cores(), 1u, 32u);
|
252
252
|
g_shards =
|
253
253
|
static_cast<timer_shard*>(gpr_zalloc(g_num_shards * sizeof(*g_shards)));
|
254
254
|
g_shard_queue = static_cast<timer_shard**>(
|
@@ -337,7 +337,7 @@ void grpc_timer_init_unset(grpc_timer* timer) { timer->pending = false; }
|
|
337
337
|
static void timer_init(grpc_timer* timer, grpc_millis deadline,
|
338
338
|
grpc_closure* closure) {
|
339
339
|
int is_first_timer = 0;
|
340
|
-
timer_shard* shard = &g_shards[
|
340
|
+
timer_shard* shard = &g_shards[grpc_core::HashPointer(timer, g_num_shards)];
|
341
341
|
timer->closure = closure;
|
342
342
|
timer->deadline = deadline;
|
343
343
|
|
@@ -444,7 +444,7 @@ static void timer_cancel(grpc_timer* timer) {
|
|
444
444
|
return;
|
445
445
|
}
|
446
446
|
|
447
|
-
timer_shard* shard = &g_shards[
|
447
|
+
timer_shard* shard = &g_shards[grpc_core::HashPointer(timer, g_num_shards)];
|
448
448
|
gpr_mu_lock(&shard->mu);
|
449
449
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
|
450
450
|
gpr_log(GPR_INFO, "TIMER %p: CANCEL pending=%s", timer,
|
@@ -479,13 +479,13 @@ static bool refill_heap(timer_shard* shard, grpc_millis now) {
|
|
479
479
|
grpc_time_averaged_stats_update_average(&shard->stats) *
|
480
480
|
ADD_DEADLINE_SCALE;
|
481
481
|
double deadline_delta =
|
482
|
-
|
483
|
-
|
482
|
+
grpc_core::Clamp(computed_deadline_delta, MIN_QUEUE_WINDOW_DURATION,
|
483
|
+
MAX_QUEUE_WINDOW_DURATION);
|
484
484
|
grpc_timer *timer, *next;
|
485
485
|
|
486
486
|
/* Compute the new cap and put all timers under it into the queue: */
|
487
487
|
shard->queue_deadline_cap =
|
488
|
-
saturating_add(
|
488
|
+
saturating_add(std::max(now, shard->queue_deadline_cap),
|
489
489
|
static_cast<grpc_millis>(deadline_delta * 1000.0));
|
490
490
|
|
491
491
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
|
@@ -583,7 +583,7 @@ static grpc_timer_check_result run_some_expired_timers(
|
|
583
583
|
g_last_seen_min_timer = min_timer;
|
584
584
|
|
585
585
|
if (now < min_timer) {
|
586
|
-
if (next != nullptr) *next =
|
586
|
+
if (next != nullptr) *next = std::min(*next, min_timer);
|
587
587
|
return GRPC_TIMERS_CHECKED_AND_EMPTY;
|
588
588
|
}
|
589
589
|
|
@@ -628,7 +628,7 @@ static grpc_timer_check_result run_some_expired_timers(
|
|
628
628
|
}
|
629
629
|
|
630
630
|
if (next) {
|
631
|
-
*next =
|
631
|
+
*next = std::min(*next, g_shard_queue[0]->min_deadline);
|
632
632
|
}
|
633
633
|
|
634
634
|
#if GPR_ARCH_64
|
@@ -663,7 +663,7 @@ static grpc_timer_check_result timer_check(grpc_millis* next) {
|
|
663
663
|
|
664
664
|
if (now < min_timer) {
|
665
665
|
if (next != nullptr) {
|
666
|
-
*next =
|
666
|
+
*next = std::min(*next, min_timer);
|
667
667
|
}
|
668
668
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
|
669
669
|
gpr_log(GPR_INFO, "TIMER CHECK SKIP: now=%" PRId64 " min_timer=%" PRId64,
|
@@ -97,7 +97,7 @@ void grpc_timer_heap_destroy(grpc_timer_heap* heap) { gpr_free(heap->timers); }
|
|
97
97
|
bool grpc_timer_heap_add(grpc_timer_heap* heap, grpc_timer* timer) {
|
98
98
|
if (heap->timer_count == heap->timer_capacity) {
|
99
99
|
heap->timer_capacity =
|
100
|
-
|
100
|
+
std::max(heap->timer_capacity + 1, heap->timer_capacity * 3 / 2);
|
101
101
|
heap->timers = static_cast<grpc_timer**>(
|
102
102
|
gpr_realloc(heap->timers, heap->timer_capacity * sizeof(grpc_timer*)));
|
103
103
|
}
|
@@ -55,4 +55,72 @@ bool ParseDurationFromJson(const Json& field, grpc_millis* duration) {
|
|
55
55
|
return true;
|
56
56
|
}
|
57
57
|
|
58
|
+
bool ExtractJsonBool(const Json& json, absl::string_view field_name,
|
59
|
+
bool* output, std::vector<grpc_error_handle>* error_list) {
|
60
|
+
switch (json.type()) {
|
61
|
+
case Json::Type::JSON_TRUE:
|
62
|
+
*output = true;
|
63
|
+
return true;
|
64
|
+
case Json::Type::JSON_FALSE:
|
65
|
+
*output = false;
|
66
|
+
return true;
|
67
|
+
default:
|
68
|
+
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
69
|
+
absl::StrCat("field:", field_name, " error:type should be BOOLEAN")));
|
70
|
+
return false;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
bool ExtractJsonArray(const Json& json, absl::string_view field_name,
|
75
|
+
const Json::Array** output,
|
76
|
+
std::vector<grpc_error_handle>* error_list) {
|
77
|
+
if (json.type() != Json::Type::ARRAY) {
|
78
|
+
*output = nullptr;
|
79
|
+
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
80
|
+
absl::StrCat("field:", field_name, " error:type should be ARRAY")));
|
81
|
+
return false;
|
82
|
+
}
|
83
|
+
*output = &json.array_value();
|
84
|
+
return true;
|
85
|
+
}
|
86
|
+
|
87
|
+
bool ExtractJsonObject(const Json& json, absl::string_view field_name,
|
88
|
+
const Json::Object** output,
|
89
|
+
std::vector<grpc_error_handle>* error_list) {
|
90
|
+
if (json.type() != Json::Type::OBJECT) {
|
91
|
+
*output = nullptr;
|
92
|
+
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
93
|
+
absl::StrCat("field:", field_name, " error:type should be OBJECT")));
|
94
|
+
return false;
|
95
|
+
}
|
96
|
+
*output = &json.object_value();
|
97
|
+
return true;
|
98
|
+
}
|
99
|
+
|
100
|
+
bool ParseJsonObjectFieldAsDuration(const Json::Object& object,
|
101
|
+
absl::string_view field_name,
|
102
|
+
grpc_millis* output,
|
103
|
+
std::vector<grpc_error_handle>* error_list,
|
104
|
+
bool required) {
|
105
|
+
// TODO(roth): Once we can use C++14 heterogenous lookups, stop
|
106
|
+
// creating a std::string here.
|
107
|
+
auto it = object.find(std::string(field_name));
|
108
|
+
if (it == object.end()) {
|
109
|
+
if (required) {
|
110
|
+
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
111
|
+
absl::StrCat("field:", field_name, " error:does not exist.")));
|
112
|
+
}
|
113
|
+
return false;
|
114
|
+
}
|
115
|
+
if (!ParseDurationFromJson(it->second, output)) {
|
116
|
+
*output = GRPC_MILLIS_INF_PAST;
|
117
|
+
error_list->push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
|
118
|
+
absl::StrCat("field:", field_name,
|
119
|
+
" error:type should be STRING of the form given by "
|
120
|
+
"google.proto.Duration.")));
|
121
|
+
return false;
|
122
|
+
}
|
123
|
+
return true;
|
124
|
+
}
|
125
|
+
|
58
126
|
} // namespace grpc_core
|