grpc 1.41.1 → 1.42.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +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 +75 -63
- 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
@@ -110,8 +110,7 @@ static grpc_error_handle CFStreamAnnotateError(grpc_error_handle src_error,
|
|
110
110
|
return grpc_error_set_str(
|
111
111
|
grpc_error_set_int(src_error, GRPC_ERROR_INT_GRPC_STATUS,
|
112
112
|
GRPC_STATUS_UNAVAILABLE),
|
113
|
-
GRPC_ERROR_STR_TARGET_ADDRESS,
|
114
|
-
grpc_slice_from_copied_string(ep->peer_string.c_str()));
|
113
|
+
GRPC_ERROR_STR_TARGET_ADDRESS, ep->peer_string);
|
115
114
|
}
|
116
115
|
|
117
116
|
static void CallReadCb(CFStreamEndpoint* ep, grpc_error_handle error) {
|
@@ -150,7 +149,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) {
|
|
150
149
|
static void ReadAction(void* arg, grpc_error_handle error) {
|
151
150
|
CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
|
152
151
|
GPR_ASSERT(ep->read_cb != nullptr);
|
153
|
-
if (error) {
|
152
|
+
if (error != GRPC_ERROR_NONE) {
|
154
153
|
grpc_slice_buffer_reset_and_unref_internal(ep->read_slices);
|
155
154
|
CallReadCb(ep, GRPC_ERROR_REF(error));
|
156
155
|
EP_UNREF(ep, "read");
|
@@ -192,7 +191,7 @@ static void ReadAction(void* arg, grpc_error_handle error) {
|
|
192
191
|
static void WriteAction(void* arg, grpc_error_handle error) {
|
193
192
|
CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
|
194
193
|
GPR_ASSERT(ep->write_cb != nullptr);
|
195
|
-
if (error) {
|
194
|
+
if (error != GRPC_ERROR_NONE) {
|
196
195
|
grpc_slice_buffer_reset_and_unref_internal(ep->write_slices);
|
197
196
|
CallWriteCb(ep, GRPC_ERROR_REF(error));
|
198
197
|
EP_UNREF(ep, "write");
|
@@ -287,13 +286,15 @@ static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
|
|
287
286
|
void CFStreamShutdown(grpc_endpoint* ep, grpc_error_handle why) {
|
288
287
|
CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
|
289
288
|
if (grpc_tcp_trace.enabled()) {
|
290
|
-
gpr_log(GPR_DEBUG, "CFStream endpoint:%p shutdown (%
|
289
|
+
gpr_log(GPR_DEBUG, "CFStream endpoint:%p shutdown (%s)", ep_impl,
|
290
|
+
grpc_error_std_string(why).c_str());
|
291
291
|
}
|
292
292
|
CFReadStreamClose(ep_impl->read_stream);
|
293
293
|
CFWriteStreamClose(ep_impl->write_stream);
|
294
294
|
ep_impl->stream_sync->Shutdown(why);
|
295
295
|
if (grpc_tcp_trace.enabled()) {
|
296
|
-
gpr_log(GPR_DEBUG, "CFStream endpoint:%p shutdown DONE (%
|
296
|
+
gpr_log(GPR_DEBUG, "CFStream endpoint:%p shutdown DONE (%s)", ep_impl,
|
297
|
+
grpc_error_std_string(why).c_str());
|
297
298
|
}
|
298
299
|
}
|
299
300
|
|
data/src/core/lib/iomgr/error.cc
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
#include <inttypes.h>
|
23
23
|
#include <string.h>
|
24
24
|
|
25
|
-
#include <grpc/status.h>
|
25
|
+
#include <grpc/impl/codegen/status.h>
|
26
26
|
#include <grpc/support/alloc.h>
|
27
27
|
#include <grpc/support/log.h>
|
28
28
|
#include <grpc/support/string_util.h>
|
@@ -34,8 +34,8 @@
|
|
34
34
|
#include "src/core/lib/debug/trace.h"
|
35
35
|
#include "src/core/lib/gpr/useful.h"
|
36
36
|
#include "src/core/lib/iomgr/error_internal.h"
|
37
|
-
#include "src/core/lib/profiling/timers.h"
|
38
37
|
#include "src/core/lib/slice/slice_internal.h"
|
38
|
+
#include "src/core/lib/slice/slice_utils.h"
|
39
39
|
|
40
40
|
grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount(false,
|
41
41
|
"error_refcount");
|
@@ -65,7 +65,7 @@ absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
|
|
65
65
|
return s;
|
66
66
|
}
|
67
67
|
|
68
|
-
std::string grpc_error_std_string(
|
68
|
+
std::string grpc_error_std_string(absl::Status error) {
|
69
69
|
return grpc_core::StatusToString(error);
|
70
70
|
}
|
71
71
|
|
@@ -87,14 +87,20 @@ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
|
|
87
87
|
char* utf8_message = gpr_format_message(err);
|
88
88
|
absl::Status s =
|
89
89
|
StatusCreate(absl::StatusCode::kUnknown, "WSA Error", location, {});
|
90
|
-
StatusSetInt(&s, StatusIntProperty::
|
91
|
-
StatusSetStr(&s, StatusStrProperty::
|
92
|
-
StatusSetStr(&s, StatusStrProperty::
|
90
|
+
StatusSetInt(&s, grpc_core::StatusIntProperty::kWsaError, err);
|
91
|
+
StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError, utf8_message);
|
92
|
+
StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall, call_name);
|
93
|
+
return s;
|
93
94
|
}
|
94
95
|
#endif
|
95
96
|
|
96
97
|
grpc_error_handle grpc_error_set_int(grpc_error_handle src,
|
97
98
|
grpc_error_ints which, intptr_t value) {
|
99
|
+
if (src == GRPC_ERROR_NONE) {
|
100
|
+
src = absl::UnknownError("");
|
101
|
+
StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
|
102
|
+
GRPC_STATUS_OK);
|
103
|
+
}
|
98
104
|
grpc_core::StatusSetInt(
|
99
105
|
&src, static_cast<grpc_core::StatusIntProperty>(which), value);
|
100
106
|
return src;
|
@@ -108,36 +114,100 @@ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
|
|
108
114
|
*p = *value;
|
109
115
|
return true;
|
110
116
|
} else {
|
117
|
+
// TODO(veblush): Remove this once absl::Status migration is done
|
118
|
+
if (which == GRPC_ERROR_INT_GRPC_STATUS) {
|
119
|
+
switch (error.code()) {
|
120
|
+
case absl::StatusCode::kOk:
|
121
|
+
*p = GRPC_STATUS_OK;
|
122
|
+
return true;
|
123
|
+
case absl::StatusCode::kResourceExhausted:
|
124
|
+
*p = GRPC_STATUS_RESOURCE_EXHAUSTED;
|
125
|
+
return true;
|
126
|
+
case absl::StatusCode::kCancelled:
|
127
|
+
*p = GRPC_STATUS_CANCELLED;
|
128
|
+
return true;
|
129
|
+
default:
|
130
|
+
break;
|
131
|
+
}
|
132
|
+
}
|
111
133
|
return false;
|
112
134
|
}
|
113
135
|
}
|
114
136
|
|
115
137
|
grpc_error_handle grpc_error_set_str(grpc_error_handle src,
|
116
138
|
grpc_error_strs which,
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
139
|
+
absl::string_view str) {
|
140
|
+
if (src == GRPC_ERROR_NONE) {
|
141
|
+
src = absl::UnknownError("");
|
142
|
+
StatusSetInt(&src, grpc_core::StatusIntProperty::kRpcStatus,
|
143
|
+
GRPC_STATUS_OK);
|
144
|
+
}
|
145
|
+
if (which == GRPC_ERROR_STR_DESCRIPTION) {
|
146
|
+
// To change the message of absl::Status, a new instance should be created
|
147
|
+
// with a code and payload because it doesn't have a setter for it.
|
148
|
+
absl::Status s = absl::Status(src.code(), str);
|
149
|
+
src.ForEachPayload(
|
150
|
+
[&](absl::string_view type_url, const absl::Cord& payload) {
|
151
|
+
s.SetPayload(type_url, payload);
|
152
|
+
});
|
153
|
+
return s;
|
154
|
+
} else {
|
155
|
+
grpc_core::StatusSetStr(
|
156
|
+
&src, static_cast<grpc_core::StatusStrProperty>(which), str);
|
157
|
+
}
|
122
158
|
return src;
|
123
159
|
}
|
124
160
|
|
125
161
|
bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which,
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
162
|
+
std::string* s) {
|
163
|
+
if (which == GRPC_ERROR_STR_DESCRIPTION) {
|
164
|
+
// absl::Status uses the message field for GRPC_ERROR_STR_DESCRIPTION
|
165
|
+
// instead of using payload.
|
166
|
+
absl::string_view msg = error.message();
|
167
|
+
if (msg.empty()) {
|
168
|
+
return false;
|
169
|
+
} else {
|
170
|
+
*s = std::string(msg);
|
171
|
+
return true;
|
172
|
+
}
|
132
173
|
} else {
|
133
|
-
|
174
|
+
absl::optional<std::string> value = grpc_core::StatusGetStr(
|
175
|
+
error, static_cast<grpc_core::StatusStrProperty>(which));
|
176
|
+
if (value.has_value()) {
|
177
|
+
*s = std::move(*value);
|
178
|
+
return true;
|
179
|
+
} else {
|
180
|
+
// TODO(veblush): Remove this once absl::Status migration is done
|
181
|
+
if (which == GRPC_ERROR_STR_GRPC_MESSAGE) {
|
182
|
+
switch (error.code()) {
|
183
|
+
case absl::StatusCode::kOk:
|
184
|
+
*s = "";
|
185
|
+
return true;
|
186
|
+
case absl::StatusCode::kResourceExhausted:
|
187
|
+
*s = "RESOURCE_EXHAUSTED";
|
188
|
+
return true;
|
189
|
+
case absl::StatusCode::kCancelled:
|
190
|
+
*s = "CANCELLED";
|
191
|
+
return true;
|
192
|
+
default:
|
193
|
+
break;
|
194
|
+
}
|
195
|
+
}
|
196
|
+
return false;
|
197
|
+
}
|
134
198
|
}
|
135
199
|
}
|
136
200
|
|
137
201
|
grpc_error_handle grpc_error_add_child(grpc_error_handle src,
|
138
202
|
grpc_error_handle child) {
|
139
|
-
|
140
|
-
|
203
|
+
if (src.ok()) {
|
204
|
+
return child;
|
205
|
+
} else {
|
206
|
+
if (!child.ok()) {
|
207
|
+
grpc_core::StatusAddChild(&src, child);
|
208
|
+
}
|
209
|
+
return src;
|
210
|
+
}
|
141
211
|
}
|
142
212
|
|
143
213
|
bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
|
@@ -300,8 +370,8 @@ static uint8_t get_placement(grpc_error_handle* err, size_t size) {
|
|
300
370
|
GPR_ASSERT(*err);
|
301
371
|
uint8_t slots = static_cast<uint8_t>(size / sizeof(intptr_t));
|
302
372
|
if ((*err)->arena_size + slots > (*err)->arena_capacity) {
|
303
|
-
(*err)->arena_capacity = static_cast<uint8_t>
|
304
|
-
UINT8_MAX - 1, (3 * (*err)->arena_capacity / 2));
|
373
|
+
(*err)->arena_capacity = static_cast<uint8_t>(std::min(
|
374
|
+
size_t(UINT8_MAX - 1), size_t(3 * (*err)->arena_capacity / 2)));
|
305
375
|
if ((*err)->arena_size + slots > (*err)->arena_capacity) {
|
306
376
|
return UINT8_MAX;
|
307
377
|
}
|
@@ -417,7 +487,6 @@ grpc_error_handle grpc_error_create(const char* file, int line,
|
|
417
487
|
const grpc_slice& desc,
|
418
488
|
grpc_error_handle* referencing,
|
419
489
|
size_t num_referencing) {
|
420
|
-
GPR_TIMER_SCOPE("grpc_error_create", 0);
|
421
490
|
uint8_t initial_arena_capacity = static_cast<uint8_t>(
|
422
491
|
DEFAULT_ERROR_CAPACITY +
|
423
492
|
static_cast<uint8_t>(num_referencing * SLOTS_PER_LINKED_ERROR) +
|
@@ -483,13 +552,12 @@ static void ref_errs(grpc_error_handle err) {
|
|
483
552
|
while (slot != UINT8_MAX) {
|
484
553
|
grpc_linked_error* lerr =
|
485
554
|
reinterpret_cast<grpc_linked_error*>(err->arena + slot);
|
486
|
-
GRPC_ERROR_REF(lerr->err);
|
555
|
+
(void)GRPC_ERROR_REF(lerr->err);
|
487
556
|
slot = lerr->next;
|
488
557
|
}
|
489
558
|
}
|
490
559
|
|
491
560
|
static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
|
492
|
-
GPR_TIMER_SCOPE("copy_error_and_unref", 0);
|
493
561
|
grpc_error_handle out;
|
494
562
|
if (grpc_error_is_special(in)) {
|
495
563
|
out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
|
@@ -541,7 +609,6 @@ static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
|
|
541
609
|
|
542
610
|
grpc_error_handle grpc_error_set_int(grpc_error_handle src,
|
543
611
|
grpc_error_ints which, intptr_t value) {
|
544
|
-
GPR_TIMER_SCOPE("grpc_error_set_int", 0);
|
545
612
|
grpc_error_handle new_err = copy_error_and_unref(src);
|
546
613
|
internal_set_int(&new_err, which, value);
|
547
614
|
return new_err;
|
@@ -555,16 +622,15 @@ struct special_error_status_map {
|
|
555
622
|
const special_error_status_map error_status_map[] = {
|
556
623
|
{GRPC_STATUS_OK, "", 0}, // GRPC_ERROR_NONE
|
557
624
|
{GRPC_STATUS_INVALID_ARGUMENT, "", 0}, // GRPC_ERROR_RESERVED_1
|
558
|
-
{GRPC_STATUS_RESOURCE_EXHAUSTED, "
|
559
|
-
strlen("
|
625
|
+
{GRPC_STATUS_RESOURCE_EXHAUSTED, "RESOURCE_EXHAUSTED",
|
626
|
+
strlen("RESOURCE_EXHAUSTED")}, // GRPC_ERROR_OOM
|
560
627
|
{GRPC_STATUS_INVALID_ARGUMENT, "", 0}, // GRPC_ERROR_RESERVED_2
|
561
|
-
{GRPC_STATUS_CANCELLED, "
|
562
|
-
strlen("
|
628
|
+
{GRPC_STATUS_CANCELLED, "CANCELLED",
|
629
|
+
strlen("CANCELLED")}, // GRPC_ERROR_CANCELLED
|
563
630
|
};
|
564
631
|
|
565
632
|
bool grpc_error_get_int(grpc_error_handle err, grpc_error_ints which,
|
566
633
|
intptr_t* p) {
|
567
|
-
GPR_TIMER_SCOPE("grpc_error_get_int", 0);
|
568
634
|
if (grpc_error_is_special(err)) {
|
569
635
|
if (which != GRPC_ERROR_INT_GRPC_STATUS) return false;
|
570
636
|
*p = error_status_map[reinterpret_cast<size_t>(err)].code;
|
@@ -580,28 +646,26 @@ bool grpc_error_get_int(grpc_error_handle err, grpc_error_ints which,
|
|
580
646
|
|
581
647
|
grpc_error_handle grpc_error_set_str(grpc_error_handle src,
|
582
648
|
grpc_error_strs which,
|
583
|
-
|
584
|
-
GPR_TIMER_SCOPE("grpc_error_set_str", 0);
|
649
|
+
absl::string_view str) {
|
585
650
|
grpc_error_handle new_err = copy_error_and_unref(src);
|
586
|
-
internal_set_str(&new_err, which,
|
651
|
+
internal_set_str(&new_err, which,
|
652
|
+
grpc_slice_from_copied_buffer(str.data(), str.length()));
|
587
653
|
return new_err;
|
588
654
|
}
|
589
655
|
|
590
656
|
bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
|
591
|
-
|
657
|
+
std::string* s) {
|
592
658
|
if (grpc_error_is_special(err)) {
|
593
659
|
if (which != GRPC_ERROR_STR_GRPC_MESSAGE) return false;
|
594
660
|
const special_error_status_map& msg =
|
595
661
|
error_status_map[reinterpret_cast<size_t>(err)];
|
596
|
-
|
597
|
-
str->data.refcounted.bytes =
|
598
|
-
reinterpret_cast<uint8_t*>(const_cast<char*>(msg.msg));
|
599
|
-
str->data.refcounted.length = msg.len;
|
662
|
+
*s = std::string(msg.msg, msg.len);
|
600
663
|
return true;
|
601
664
|
}
|
602
665
|
uint8_t slot = err->strs[which];
|
603
666
|
if (slot != UINT8_MAX) {
|
604
|
-
*
|
667
|
+
grpc_slice* slice = reinterpret_cast<grpc_slice*>(err->arena + slot);
|
668
|
+
*s = std::string(grpc_core::StringViewFromSlice(*slice));
|
605
669
|
return true;
|
606
670
|
} else {
|
607
671
|
return false;
|
@@ -610,7 +674,6 @@ bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
|
|
610
674
|
|
611
675
|
grpc_error_handle grpc_error_add_child(grpc_error_handle src,
|
612
676
|
grpc_error_handle child) {
|
613
|
-
GPR_TIMER_SCOPE("grpc_error_add_child", 0);
|
614
677
|
if (src != GRPC_ERROR_NONE) {
|
615
678
|
if (child == GRPC_ERROR_NONE) {
|
616
679
|
/* \a child is empty. Simply return the ref to \a src */
|
@@ -631,9 +694,9 @@ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
|
|
631
694
|
}
|
632
695
|
}
|
633
696
|
|
634
|
-
static const char* no_error_string = "\"
|
635
|
-
static const char* oom_error_string = "\"
|
636
|
-
static const char* cancelled_error_string = "\"
|
697
|
+
static const char* no_error_string = "\"OK\"";
|
698
|
+
static const char* oom_error_string = "\"RESOURCE_EXHAUSTED\"";
|
699
|
+
static const char* cancelled_error_string = "\"CANCELLED\"";
|
637
700
|
|
638
701
|
struct kv_pair {
|
639
702
|
char* key;
|
@@ -646,7 +709,7 @@ struct kv_pairs {
|
|
646
709
|
};
|
647
710
|
static void append_chr(char c, char** s, size_t* sz, size_t* cap) {
|
648
711
|
if (*sz == *cap) {
|
649
|
-
*cap =
|
712
|
+
*cap = std::max(size_t(8), 3 * *cap / 2);
|
650
713
|
*s = static_cast<char*>(gpr_realloc(*s, *cap));
|
651
714
|
}
|
652
715
|
(*s)[(*sz)++] = c;
|
@@ -698,7 +761,7 @@ static void append_esc_str(const uint8_t* str, size_t len, char** s, size_t* sz,
|
|
698
761
|
|
699
762
|
static void append_kv(kv_pairs* kvs, char* key, char* value) {
|
700
763
|
if (kvs->num_kvs == kvs->cap_kvs) {
|
701
|
-
kvs->cap_kvs =
|
764
|
+
kvs->cap_kvs = std::max(3 * kvs->cap_kvs / 2, size_t(4));
|
702
765
|
kvs->kvs = static_cast<kv_pair*>(
|
703
766
|
gpr_realloc(kvs->kvs, sizeof(*kvs->kvs) * kvs->cap_kvs));
|
704
767
|
}
|
@@ -842,7 +905,6 @@ static char* finish_kvs(kv_pairs* kvs) {
|
|
842
905
|
}
|
843
906
|
|
844
907
|
const char* grpc_error_string(grpc_error_handle err) {
|
845
|
-
GPR_TIMER_SCOPE("grpc_error_string", 0);
|
846
908
|
if (err == GRPC_ERROR_NONE) return no_error_string;
|
847
909
|
if (err == GRPC_ERROR_OOM) return oom_error_string;
|
848
910
|
if (err == GRPC_ERROR_CANCELLED) return cancelled_error_string;
|
@@ -889,9 +951,8 @@ grpc_error_handle grpc_os_error(const char* file, int line, int err,
|
|
889
951
|
grpc_slice_from_static_string(strerror(err)),
|
890
952
|
nullptr, 0),
|
891
953
|
GRPC_ERROR_INT_ERRNO, err),
|
892
|
-
GRPC_ERROR_STR_OS_ERROR,
|
893
|
-
|
894
|
-
GRPC_ERROR_STR_SYSCALL, grpc_slice_from_copied_string(call_name));
|
954
|
+
GRPC_ERROR_STR_OS_ERROR, strerror(err)),
|
955
|
+
GRPC_ERROR_STR_SYSCALL, call_name);
|
895
956
|
}
|
896
957
|
|
897
958
|
#ifdef GPR_WINDOWS
|
@@ -905,8 +966,8 @@ grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
|
|
905
966
|
grpc_slice_from_static_string("OS Error"), NULL,
|
906
967
|
0),
|
907
968
|
GRPC_ERROR_INT_WSA_ERROR, err),
|
908
|
-
GRPC_ERROR_STR_OS_ERROR,
|
909
|
-
GRPC_ERROR_STR_SYSCALL,
|
969
|
+
GRPC_ERROR_STR_OS_ERROR, utf8_message),
|
970
|
+
GRPC_ERROR_STR_SYSCALL, call_name);
|
910
971
|
gpr_free(utf8_message);
|
911
972
|
return error;
|
912
973
|
}
|
data/src/core/lib/iomgr/error.h
CHANGED
@@ -32,6 +32,7 @@
|
|
32
32
|
#include <grpc/support/time.h>
|
33
33
|
|
34
34
|
#include "src/core/lib/debug/trace.h"
|
35
|
+
#include "src/core/lib/gpr/spinlock.h"
|
35
36
|
#include "src/core/lib/gprpp/status_helper.h"
|
36
37
|
#include "src/core/lib/slice/slice_internal.h"
|
37
38
|
|
@@ -156,11 +157,11 @@ void grpc_enable_error_creation();
|
|
156
157
|
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
157
158
|
|
158
159
|
#define GRPC_ERROR_NONE absl::OkStatus()
|
159
|
-
#define GRPC_ERROR_OOM absl::Status(absl::ResourceExhaustedError)
|
160
|
+
#define GRPC_ERROR_OOM absl::Status(absl::ResourceExhaustedError(""))
|
160
161
|
#define GRPC_ERROR_CANCELLED absl::CancelledError()
|
161
162
|
|
162
163
|
#define GRPC_ERROR_REF(err) (err)
|
163
|
-
#define GRPC_ERROR_UNREF(err)
|
164
|
+
#define GRPC_ERROR_UNREF(err) (void)(err)
|
164
165
|
|
165
166
|
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
|
166
167
|
StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
|
@@ -189,11 +190,11 @@ absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
|
|
189
190
|
// them. If the vector is empty, return GRPC_ERROR_NONE.
|
190
191
|
template <typename VectorType>
|
191
192
|
static absl::Status grpc_status_create_from_vector(
|
192
|
-
const grpc_core::DebugLocation& location,
|
193
|
+
const grpc_core::DebugLocation& location, absl::string_view desc,
|
193
194
|
VectorType* error_list) {
|
194
195
|
absl::Status error = GRPC_ERROR_NONE;
|
195
196
|
if (error_list->size() != 0) {
|
196
|
-
error = grpc_status_create(absl::StatusCode::kUnknown, desc,
|
197
|
+
error = grpc_status_create(absl::StatusCode::kUnknown, desc, location,
|
197
198
|
error_list->size(), error_list->data());
|
198
199
|
error_list->clear();
|
199
200
|
}
|
@@ -363,15 +364,12 @@ grpc_error_handle grpc_error_set_int(grpc_error_handle src,
|
|
363
364
|
/// intptr_t for `p`, even if the value of `p` is not used.
|
364
365
|
bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
|
365
366
|
intptr_t* p);
|
366
|
-
/// This call takes ownership of the slice; the error is responsible for
|
367
|
-
/// eventually unref-ing it.
|
368
367
|
grpc_error_handle grpc_error_set_str(
|
369
368
|
grpc_error_handle src, grpc_error_strs which,
|
370
|
-
|
369
|
+
absl::string_view str) GRPC_MUST_USE_RESULT;
|
371
370
|
/// Returns false if the specified string is not set.
|
372
|
-
/// Caller does NOT own the slice.
|
373
371
|
bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which,
|
374
|
-
|
372
|
+
std::string* str);
|
375
373
|
|
376
374
|
/// Add a child error: an error that is believed to have contributed to this
|
377
375
|
/// error occurring. Allows root causing high level errors from lower level
|
@@ -398,4 +396,47 @@ inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
|
|
398
396
|
#define GRPC_LOG_IF_ERROR(what, error) \
|
399
397
|
(grpc_log_if_error((what), (error), __FILE__, __LINE__))
|
400
398
|
|
399
|
+
/// Helper class to get & set grpc_error_handle in a thread-safe fashion.
|
400
|
+
/// This could be considered as atomic<grpc_error_handle>.
|
401
|
+
class AtomicError {
|
402
|
+
public:
|
403
|
+
AtomicError() {
|
404
|
+
error_ = GRPC_ERROR_NONE;
|
405
|
+
lock_ = GPR_SPINLOCK_STATIC_INITIALIZER;
|
406
|
+
}
|
407
|
+
explicit AtomicError(grpc_error_handle error) {
|
408
|
+
error_ = GRPC_ERROR_REF(error);
|
409
|
+
}
|
410
|
+
~AtomicError() { GRPC_ERROR_UNREF(error_); }
|
411
|
+
|
412
|
+
AtomicError(const AtomicError&) = delete;
|
413
|
+
AtomicError& operator=(const AtomicError&) = delete;
|
414
|
+
|
415
|
+
/// returns get() == GRPC_ERROR_NONE
|
416
|
+
bool ok() {
|
417
|
+
gpr_spinlock_lock(&lock_);
|
418
|
+
bool ret = error_ == GRPC_ERROR_NONE;
|
419
|
+
gpr_spinlock_unlock(&lock_);
|
420
|
+
return ret;
|
421
|
+
}
|
422
|
+
|
423
|
+
grpc_error_handle get() {
|
424
|
+
gpr_spinlock_lock(&lock_);
|
425
|
+
grpc_error_handle ret = error_;
|
426
|
+
gpr_spinlock_unlock(&lock_);
|
427
|
+
return ret;
|
428
|
+
}
|
429
|
+
|
430
|
+
void set(grpc_error_handle error) {
|
431
|
+
gpr_spinlock_lock(&lock_);
|
432
|
+
GRPC_ERROR_UNREF(error_);
|
433
|
+
error_ = GRPC_ERROR_REF(error);
|
434
|
+
gpr_spinlock_unlock(&lock_);
|
435
|
+
}
|
436
|
+
|
437
|
+
private:
|
438
|
+
grpc_error_handle error_;
|
439
|
+
gpr_spinlock lock_;
|
440
|
+
};
|
441
|
+
|
401
442
|
#endif /* GRPC_CORE_LIB_IOMGR_ERROR_H */
|
@@ -48,7 +48,12 @@ grpc_error_handle grpc_error_create_from_cferror(const char* file, int line,
|
|
48
48
|
absl::StrFormat("%s (error domain:%s, code:%ld, description:%s)",
|
49
49
|
custom_desc, buf_domain, code, buf_desc);
|
50
50
|
CFRelease(desc);
|
51
|
+
#ifdef GRPC_ERROR_IS_ABSEIL_STATUS
|
52
|
+
return StatusCreate(absl::StatusCode::kUnknown, error_msg,
|
53
|
+
grpc_core::DebugLocation(file, line), {});
|
54
|
+
#else
|
51
55
|
return grpc_error_create(
|
52
56
|
file, line, grpc_slice_from_copied_string(error_msg.c_str()), NULL, 0);
|
57
|
+
#endif
|
53
58
|
}
|
54
59
|
#endif /* GRPC_CFSTREAM */
|
@@ -195,7 +195,7 @@ struct grpc_pollset_worker {
|
|
195
195
|
(worker)->kick_state_mutator = __LINE__; \
|
196
196
|
} while (false)
|
197
197
|
|
198
|
-
#define MAX_NEIGHBORHOODS
|
198
|
+
#define MAX_NEIGHBORHOODS 1024u
|
199
199
|
|
200
200
|
typedef struct pollset_neighborhood {
|
201
201
|
union {
|
@@ -525,7 +525,8 @@ static grpc_error_handle pollset_global_init(void) {
|
|
525
525
|
&ev) != 0) {
|
526
526
|
return GRPC_OS_ERROR(errno, "epoll_ctl");
|
527
527
|
}
|
528
|
-
g_num_neighborhoods =
|
528
|
+
g_num_neighborhoods =
|
529
|
+
grpc_core::Clamp(gpr_cpu_num_cores(), 1u, MAX_NEIGHBORHOODS);
|
529
530
|
g_neighborhoods = static_cast<pollset_neighborhood*>(
|
530
531
|
gpr_zalloc(sizeof(*g_neighborhoods) * g_num_neighborhoods));
|
531
532
|
for (size_t i = 0; i < g_num_neighborhoods; i++) {
|
@@ -1071,7 +1071,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
|
|
1071
1071
|
case WRR_EMPTIED:
|
1072
1072
|
if (pollset->active_pollable != worker->pollable_obj) {
|
1073
1073
|
// pollable no longer being polled: flush events
|
1074
|
-
pollable_process_events(pollset, worker->pollable_obj, true);
|
1074
|
+
(void)pollable_process_events(pollset, worker->pollable_obj, true);
|
1075
1075
|
}
|
1076
1076
|
break;
|
1077
1077
|
case WRR_REMOVED:
|
@@ -1357,7 +1357,7 @@ static void pollset_set_add_fd(grpc_pollset_set* pss, grpc_fd* fd) {
|
|
1357
1357
|
err_desc);
|
1358
1358
|
}
|
1359
1359
|
if (pss->fd_count == pss->fd_capacity) {
|
1360
|
-
pss->fd_capacity =
|
1360
|
+
pss->fd_capacity = std::max(pss->fd_capacity * 2, size_t(8));
|
1361
1361
|
pss->fds = static_cast<grpc_fd**>(
|
1362
1362
|
gpr_realloc(pss->fds, pss->fd_capacity * sizeof(*pss->fds)));
|
1363
1363
|
}
|
@@ -1467,7 +1467,7 @@ static void pollset_set_add_pollset(grpc_pollset_set* pss, grpc_pollset* ps) {
|
|
1467
1467
|
pss->fds, &pss->fd_count),
|
1468
1468
|
err_desc);
|
1469
1469
|
if (pss->pollset_count == pss->pollset_capacity) {
|
1470
|
-
pss->pollset_capacity =
|
1470
|
+
pss->pollset_capacity = std::max(pss->pollset_capacity * 2, size_t(8));
|
1471
1471
|
pss->pollsets = static_cast<grpc_pollset**>(gpr_realloc(
|
1472
1472
|
pss->pollsets, pss->pollset_capacity * sizeof(*pss->pollsets)));
|
1473
1473
|
}
|
@@ -1492,7 +1492,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1492
1492
|
return;
|
1493
1493
|
}
|
1494
1494
|
if (a > b) {
|
1495
|
-
|
1495
|
+
std::swap(a, b);
|
1496
1496
|
}
|
1497
1497
|
gpr_mu* a_mu = &a->mu;
|
1498
1498
|
gpr_mu* b_mu = &b->mu;
|
@@ -1513,7 +1513,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1513
1513
|
const size_t a_size = a->fd_count + a->pollset_count;
|
1514
1514
|
const size_t b_size = b->fd_count + b->pollset_count;
|
1515
1515
|
if (b_size > a_size) {
|
1516
|
-
|
1516
|
+
std::swap(a, b);
|
1517
1517
|
}
|
1518
1518
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
1519
1519
|
gpr_log(GPR_INFO, "PSS: parent %p to %p", b, a);
|
@@ -1521,7 +1521,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1521
1521
|
a->refs.Ref();
|
1522
1522
|
b->parent = a;
|
1523
1523
|
if (a->fd_capacity < a->fd_count + b->fd_count) {
|
1524
|
-
a->fd_capacity =
|
1524
|
+
a->fd_capacity = std::max(2 * a->fd_capacity, a->fd_count + b->fd_count);
|
1525
1525
|
a->fds = static_cast<grpc_fd**>(
|
1526
1526
|
gpr_realloc(a->fds, a->fd_capacity * sizeof(*a->fds)));
|
1527
1527
|
}
|
@@ -1539,7 +1539,7 @@ static void pollset_set_add_pollset_set(grpc_pollset_set* a,
|
|
1539
1539
|
err_desc);
|
1540
1540
|
if (a->pollset_capacity < a->pollset_count + b->pollset_count) {
|
1541
1541
|
a->pollset_capacity =
|
1542
|
-
|
1542
|
+
std::max(2 * a->pollset_capacity, a->pollset_count + b->pollset_count);
|
1543
1543
|
a->pollsets = static_cast<grpc_pollset**>(
|
1544
1544
|
gpr_realloc(a->pollsets, a->pollset_capacity * sizeof(*a->pollsets)));
|
1545
1545
|
}
|