grpc 1.30.0 → 1.31.1
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 +560 -619
- data/include/grpc/grpc_security.h +8 -0
- data/include/grpc/grpc_security_constants.h +3 -0
- data/include/grpc/impl/codegen/grpc_types.h +7 -5
- data/include/grpc/impl/codegen/port_platform.h +0 -32
- data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
- data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
- data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
- data/src/core/ext/filters/client_channel/config_selector.h +93 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
- data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
- data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
- data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
- data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
- data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
- data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
- data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
- data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
- data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
- data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
- data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
- data/src/core/lib/channel/channel_trace.cc +2 -6
- data/src/core/lib/channel/channelz.cc +5 -15
- data/src/core/lib/gpr/log_linux.cc +6 -8
- data/src/core/lib/gpr/log_posix.cc +6 -8
- data/src/core/lib/gpr/string.cc +10 -9
- data/src/core/lib/gpr/string.h +4 -2
- data/src/core/lib/gprpp/global_config_env.cc +8 -6
- data/src/core/lib/http/httpcli.cc +13 -10
- data/src/core/lib/http/httpcli_security_connector.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
- data/src/core/lib/iomgr/error_cfstream.cc +9 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
- data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/ev_posix.cc +2 -0
- data/src/core/lib/iomgr/iomgr.cc +10 -0
- data/src/core/lib/iomgr/iomgr.h +10 -0
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
- data/src/core/lib/iomgr/port.h +1 -21
- data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
- data/src/core/lib/iomgr/resource_quota.cc +34 -31
- data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
- data/src/core/lib/iomgr/socket_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
- data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
- data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
- data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
- data/src/core/lib/iomgr/tcp_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_custom.h +1 -1
- data/src/core/lib/iomgr/tcp_server.cc +3 -4
- data/src/core/lib/iomgr/tcp_server.h +7 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
- data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
- data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
- data/src/core/lib/iomgr/timer_generic.cc +13 -12
- data/src/core/lib/iomgr/udp_server.cc +24 -23
- data/src/core/lib/iomgr/udp_server.h +5 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
- data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
- data/src/core/lib/json/json_reader.cc +20 -21
- data/src/core/lib/security/credentials/credentials.h +5 -3
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
- data/src/core/lib/security/security_connector/security_connector.cc +2 -0
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
- data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
- data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
- data/src/core/lib/security/transport/auth_filters.h +0 -5
- data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
- data/src/core/lib/security/util/json_util.cc +12 -13
- data/src/core/lib/slice/slice.cc +38 -1
- data/src/core/lib/slice/slice_internal.h +1 -0
- data/src/core/lib/surface/call.cc +40 -41
- data/src/core/lib/surface/completion_queue.cc +271 -14
- data/src/core/lib/surface/completion_queue.h +8 -0
- data/src/core/lib/surface/init.cc +2 -0
- data/src/core/lib/surface/server.cc +565 -632
- data/src/core/lib/surface/server.h +34 -12
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/transport.h +6 -0
- data/src/core/lib/uri/uri_parser.cc +8 -15
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +108 -11
- data/src/core/tsi/ssl_transport_security.h +14 -2
- data/src/core/tsi/transport_security_interface.h +5 -0
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/extconf.rb +5 -2
- data/src/ruby/ext/grpc/rb_call.c +3 -2
- data/src/ruby/ext/grpc/rb_call.h +4 -0
- data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
- 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/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
- data/src/ruby/spec/support/services.rb +10 -4
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- data/third_party/boringssl-with-bazel/err_data.c +89 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
- data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- data/third_party/upb/upb/decode.c +467 -504
- data/third_party/upb/upb/encode.c +163 -121
- data/third_party/upb/upb/msg.c +130 -64
- data/third_party/upb/upb/msg.h +418 -14
- data/third_party/upb/upb/port_def.inc +35 -6
- data/third_party/upb/upb/port_undef.inc +8 -1
- data/third_party/upb/upb/table.c +53 -75
- data/third_party/upb/upb/table.int.h +11 -43
- data/third_party/upb/upb/upb.c +148 -124
- data/third_party/upb/upb/upb.h +65 -147
- data/third_party/upb/upb/upb.hpp +86 -0
- metadata +90 -30
- data/third_party/upb/upb/generated_util.h +0 -105
@@ -38,10 +38,14 @@
|
|
38
38
|
#include <sys/syscall.h>
|
39
39
|
#include <unistd.h>
|
40
40
|
|
41
|
-
#include <
|
42
|
-
#include <grpc/support/string_util.h>
|
41
|
+
#include <string>
|
43
42
|
|
44
43
|
#include "absl/container/inlined_vector.h"
|
44
|
+
#include "absl/strings/str_cat.h"
|
45
|
+
#include "absl/strings/str_format.h"
|
46
|
+
|
47
|
+
#include <grpc/support/alloc.h>
|
48
|
+
|
45
49
|
#include "src/core/lib/debug/stats.h"
|
46
50
|
#include "src/core/lib/gpr/spinlock.h"
|
47
51
|
#include "src/core/lib/gpr/tls.h"
|
@@ -63,10 +67,6 @@
|
|
63
67
|
//#define GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP 1
|
64
68
|
|
65
69
|
#define MAX_EPOLL_EVENTS 100
|
66
|
-
// TODO(juanlishen): We use a greater-than-one value here as a workaround fix to
|
67
|
-
// a keepalive ping timeout issue. We may want to revert https://github
|
68
|
-
// .com/grpc/grpc/pull/14943 once we figure out the root cause.
|
69
|
-
#define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL 16
|
70
70
|
#define MAX_FDS_IN_CACHE 32
|
71
71
|
|
72
72
|
grpc_core::DebugOnlyTraceFlag grpc_trace_pollable_refcount(false,
|
@@ -124,11 +124,10 @@ static const char* pollable_type_string(pollable_type t) {
|
|
124
124
|
return "<invalid>";
|
125
125
|
}
|
126
126
|
|
127
|
-
static
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
return out;
|
127
|
+
static std::string pollable_desc(pollable* p) {
|
128
|
+
return absl::StrFormat("type=%s epfd=%d wakeup=%d",
|
129
|
+
pollable_type_string(p->type), p->epfd,
|
130
|
+
p->wakeup.read_fd);
|
132
131
|
}
|
133
132
|
|
134
133
|
/// Shared empty pollable - used by pollset to poll on until the first fd is
|
@@ -170,15 +169,13 @@ struct grpc_fd {
|
|
170
169
|
write_closure.InitEvent();
|
171
170
|
error_closure.InitEvent();
|
172
171
|
|
173
|
-
|
174
|
-
|
175
|
-
grpc_iomgr_register_object(&iomgr_object, fd_name);
|
172
|
+
std::string fd_name = absl::StrCat(name, " fd=", fd);
|
173
|
+
grpc_iomgr_register_object(&iomgr_object, fd_name.c_str());
|
176
174
|
#ifndef NDEBUG
|
177
175
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fd_refcount)) {
|
178
|
-
gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, this, fd_name);
|
176
|
+
gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, this, fd_name.c_str());
|
179
177
|
}
|
180
178
|
#endif
|
181
|
-
gpr_free(fd_name);
|
182
179
|
}
|
183
180
|
|
184
181
|
// This is really the dtor, but the poller threads waking up from
|
@@ -872,8 +869,6 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset,
|
|
872
869
|
(pollable_obj->event_count - pollable_obj->event_cursor) / worker_count;
|
873
870
|
if (handle_count == 0) {
|
874
871
|
handle_count = 1;
|
875
|
-
} else if (handle_count > MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) {
|
876
|
-
handle_count = MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL;
|
877
872
|
}
|
878
873
|
grpc_error* error = GRPC_ERROR_NONE;
|
879
874
|
for (int i = 0; (drain || i < handle_count) &&
|
@@ -934,9 +929,8 @@ static grpc_error* pollable_epoll(pollable* p, grpc_millis deadline) {
|
|
934
929
|
int timeout = poll_deadline_to_millis_timeout(deadline);
|
935
930
|
|
936
931
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
|
937
|
-
|
938
|
-
|
939
|
-
gpr_free(desc);
|
932
|
+
gpr_log(GPR_INFO, "POLLABLE:%p[%s] poll for %dms", p,
|
933
|
+
pollable_desc(p).c_str(), timeout);
|
940
934
|
}
|
941
935
|
|
942
936
|
if (timeout != 0) {
|
@@ -32,9 +32,12 @@
|
|
32
32
|
#include <sys/socket.h>
|
33
33
|
#include <unistd.h>
|
34
34
|
|
35
|
+
#include <string>
|
36
|
+
|
37
|
+
#include "absl/strings/str_cat.h"
|
38
|
+
|
35
39
|
#include <grpc/support/alloc.h>
|
36
40
|
#include <grpc/support/log.h>
|
37
|
-
#include <grpc/support/string_util.h>
|
38
41
|
|
39
42
|
#include "src/core/lib/debug/stats.h"
|
40
43
|
#include "src/core/lib/gpr/murmur_hash.h"
|
@@ -381,10 +384,8 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
|
|
381
384
|
r->released = 0;
|
382
385
|
gpr_atm_no_barrier_store(&r->pollhup, 0);
|
383
386
|
|
384
|
-
|
385
|
-
|
386
|
-
grpc_iomgr_register_object(&r->iomgr_object, name2);
|
387
|
-
gpr_free(name2);
|
387
|
+
std::string name2 = absl::StrCat(name, " fd=", fd);
|
388
|
+
grpc_iomgr_register_object(&r->iomgr_object, name2.c_str());
|
388
389
|
fork_fd_list_add_grpc_fd(r);
|
389
390
|
return r;
|
390
391
|
}
|
@@ -37,6 +37,7 @@
|
|
37
37
|
#include "src/core/lib/iomgr/ev_epollex_linux.h"
|
38
38
|
#include "src/core/lib/iomgr/ev_poll_posix.h"
|
39
39
|
#include "src/core/lib/iomgr/internal_errqueue.h"
|
40
|
+
#include "src/core/lib/iomgr/iomgr.h"
|
40
41
|
|
41
42
|
GPR_GLOBAL_CONFIG_DEFINE_STRING(
|
42
43
|
grpc_poll_strategy, "all",
|
@@ -107,6 +108,7 @@ const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
|
|
107
108
|
auto ret = grpc_init_poll_posix(explicit_request);
|
108
109
|
real_poll_function = grpc_poll_function;
|
109
110
|
grpc_poll_function = dummy_poll;
|
111
|
+
grpc_iomgr_mark_non_polling_internal();
|
110
112
|
|
111
113
|
return ret;
|
112
114
|
}
|
data/src/core/lib/iomgr/iomgr.cc
CHANGED
@@ -31,6 +31,7 @@
|
|
31
31
|
|
32
32
|
#include "src/core/lib/gpr/string.h"
|
33
33
|
#include "src/core/lib/gpr/useful.h"
|
34
|
+
#include "src/core/lib/gprpp/atomic.h"
|
34
35
|
#include "src/core/lib/gprpp/global_config.h"
|
35
36
|
#include "src/core/lib/gprpp/thd.h"
|
36
37
|
#include "src/core/lib/iomgr/buffer_list.h"
|
@@ -50,6 +51,7 @@ static gpr_cv g_rcv;
|
|
50
51
|
static int g_shutdown;
|
51
52
|
static grpc_iomgr_object g_root_object;
|
52
53
|
static bool g_grpc_abort_on_leaks;
|
54
|
+
static grpc_core::Atomic<bool> g_iomgr_non_polling{false};
|
53
55
|
|
54
56
|
void grpc_iomgr_init() {
|
55
57
|
grpc_core::ExecCtx exec_ctx;
|
@@ -192,3 +194,11 @@ void grpc_iomgr_unregister_object(grpc_iomgr_object* obj) {
|
|
192
194
|
}
|
193
195
|
|
194
196
|
bool grpc_iomgr_abort_on_leaks(void) { return g_grpc_abort_on_leaks; }
|
197
|
+
|
198
|
+
bool grpc_iomgr_non_polling() {
|
199
|
+
return g_iomgr_non_polling.Load(grpc_core::MemoryOrder::SEQ_CST);
|
200
|
+
}
|
201
|
+
|
202
|
+
void grpc_iomgr_mark_non_polling_internal() {
|
203
|
+
g_iomgr_non_polling.Store(true, grpc_core::MemoryOrder::SEQ_CST);
|
204
|
+
}
|
data/src/core/lib/iomgr/iomgr.h
CHANGED
@@ -45,6 +45,16 @@ void grpc_iomgr_shutdown_background_closure();
|
|
45
45
|
*/
|
46
46
|
bool grpc_iomgr_run_in_background();
|
47
47
|
|
48
|
+
/* Returns true if polling engine is non-polling, false otherwise.
|
49
|
+
* Currently only 'none' is non-polling.
|
50
|
+
*/
|
51
|
+
bool grpc_iomgr_non_polling();
|
52
|
+
|
53
|
+
/* Mark the polling engine as non-polling. For internal use only.
|
54
|
+
* Currently only 'none' is non-polling.
|
55
|
+
*/
|
56
|
+
void grpc_iomgr_mark_non_polling_internal();
|
57
|
+
|
48
58
|
/** Returns true if the caller is a worker thread for any background poller. */
|
49
59
|
bool grpc_iomgr_is_any_background_poller_thread();
|
50
60
|
|
@@ -93,6 +93,20 @@ bool grpc_is_epollexclusive_available(void) {
|
|
93
93
|
close(evfd);
|
94
94
|
return false;
|
95
95
|
}
|
96
|
+
// Check that EPOLLEXCLUSIVE is supported at all.
|
97
|
+
ev.events = static_cast<uint32_t>(EPOLLET | EPOLLIN | EPOLLEXCLUSIVE);
|
98
|
+
if (epoll_ctl(fd, EPOLL_CTL_ADD, evfd, &ev) != 0) {
|
99
|
+
if (!logged_why_not) {
|
100
|
+
gpr_log(GPR_DEBUG,
|
101
|
+
"epoll_ctl with EPOLLEXCLUSIVE failed with error: "
|
102
|
+
"%d. Not using epollex polling engine.",
|
103
|
+
errno);
|
104
|
+
logged_why_not = true;
|
105
|
+
}
|
106
|
+
close(fd);
|
107
|
+
close(evfd);
|
108
|
+
return false;
|
109
|
+
}
|
96
110
|
close(evfd);
|
97
111
|
close(fd);
|
98
112
|
return true;
|
data/src/core/lib/iomgr/port.h
CHANGED
@@ -33,19 +33,6 @@
|
|
33
33
|
#endif
|
34
34
|
#if defined(GRPC_CUSTOM_SOCKET)
|
35
35
|
// Do Nothing
|
36
|
-
#elif defined(GPR_MANYLINUX1)
|
37
|
-
#define GRPC_HAVE_ARPA_NAMESER 1
|
38
|
-
#define GRPC_HAVE_IFADDRS 1
|
39
|
-
#define GRPC_HAVE_IPV6_RECVPKTINFO 1
|
40
|
-
#define GRPC_HAVE_IP_PKTINFO 1
|
41
|
-
#define GRPC_HAVE_MSG_NOSIGNAL 1
|
42
|
-
#define GRPC_HAVE_UNIX_SOCKET 1
|
43
|
-
#define GRPC_POSIX_FORK 1
|
44
|
-
#define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
45
|
-
#define GRPC_POSIX_SOCKET 1
|
46
|
-
#define GRPC_POSIX_SOCKETUTILS 1
|
47
|
-
#define GRPC_POSIX_WAKEUP_FD 1
|
48
|
-
#define GRPC_LINUX_EPOLL 1
|
49
36
|
#elif defined(GPR_WINDOWS)
|
50
37
|
#define GRPC_WINSOCK_SOCKET 1
|
51
38
|
#define GRPC_WINDOWS_SOCKETUTILS 1
|
@@ -90,11 +77,6 @@
|
|
90
77
|
#if __GLIBC_PREREQ(2, 10)
|
91
78
|
#define GRPC_LINUX_SOCKETUTILS 1
|
92
79
|
#endif
|
93
|
-
#endif
|
94
|
-
#ifdef LINUX_VERSION_CODE
|
95
|
-
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
|
96
|
-
#define GRPC_HAVE_TCP_USER_TIMEOUT
|
97
|
-
#ifdef __GLIBC_PREREQ
|
98
80
|
#if !(__GLIBC_PREREQ(2, 17))
|
99
81
|
/*
|
100
82
|
* TCP_USER_TIMEOUT wasn't imported to glibc until 2.17. Use Linux system
|
@@ -102,9 +84,7 @@
|
|
102
84
|
*/
|
103
85
|
#define GRPC_LINUX_TCP_H 1
|
104
86
|
#endif /* __GLIBC_PREREQ(2, 17) */
|
105
|
-
#endif
|
106
|
-
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37) */
|
107
|
-
#endif /* LINUX_VERSION_CODE */
|
87
|
+
#endif
|
108
88
|
#ifndef __GLIBC__
|
109
89
|
#define GRPC_LINUX_EPOLL 1
|
110
90
|
#define GRPC_LINUX_EPOLL_CREATE1 1
|
@@ -18,22 +18,24 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include "src/core/lib/iomgr/
|
21
|
+
#include "src/core/lib/iomgr/resolve_address_custom.h"
|
22
22
|
|
23
|
-
#include <
|
24
|
-
#include <grpc/support/string_util.h>
|
23
|
+
#include <string.h>
|
25
24
|
|
25
|
+
#include <string>
|
26
|
+
|
27
|
+
#include "absl/strings/str_format.h"
|
28
|
+
|
29
|
+
#include <grpc/support/alloc.h>
|
26
30
|
#include <grpc/support/log.h>
|
31
|
+
|
27
32
|
#include "src/core/lib/gpr/string.h"
|
28
33
|
#include "src/core/lib/gpr/useful.h"
|
29
34
|
#include "src/core/lib/gprpp/host_port.h"
|
30
|
-
|
31
35
|
#include "src/core/lib/iomgr/iomgr_custom.h"
|
32
|
-
#include "src/core/lib/iomgr/
|
36
|
+
#include "src/core/lib/iomgr/port.h"
|
33
37
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
34
38
|
|
35
|
-
#include <string.h>
|
36
|
-
|
37
39
|
struct grpc_custom_resolver {
|
38
40
|
grpc_closure* on_done = nullptr;
|
39
41
|
grpc_resolved_addresses** addresses = nullptr;
|
@@ -88,23 +90,16 @@ static grpc_error* try_split_host_port(const char* name,
|
|
88
90
|
const char* default_port,
|
89
91
|
std::string* host, std::string* port) {
|
90
92
|
/* parse name, splitting it into host and port parts */
|
91
|
-
grpc_error* error;
|
92
93
|
grpc_core::SplitHostPort(name, host, port);
|
93
94
|
if (host->empty()) {
|
94
|
-
|
95
|
-
|
96
|
-
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
97
|
-
gpr_free(msg);
|
98
|
-
return error;
|
95
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
96
|
+
absl::StrFormat("unparseable host:port: '%s'", name).c_str());
|
99
97
|
}
|
100
98
|
if (port->empty()) {
|
101
99
|
// TODO(murgatroid99): add tests for this case
|
102
100
|
if (default_port == nullptr) {
|
103
|
-
|
104
|
-
|
105
|
-
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
106
|
-
gpr_free(msg);
|
107
|
-
return error;
|
101
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
102
|
+
absl::StrFormat("no port in name '%s'", name).c_str());
|
108
103
|
}
|
109
104
|
*port = default_port;
|
110
105
|
}
|
@@ -29,6 +29,10 @@
|
|
29
29
|
#include <string.h>
|
30
30
|
#include <sys/types.h>
|
31
31
|
|
32
|
+
#include <string>
|
33
|
+
|
34
|
+
#include "absl/strings/str_format.h"
|
35
|
+
|
32
36
|
#include <grpc/support/alloc.h>
|
33
37
|
#include <grpc/support/log.h>
|
34
38
|
#include <grpc/support/log_windows.h>
|
@@ -65,18 +69,14 @@ static grpc_error* windows_blocking_resolve_address(
|
|
65
69
|
std::string port;
|
66
70
|
grpc_core::SplitHostPort(name, &host, &port);
|
67
71
|
if (host.empty()) {
|
68
|
-
|
69
|
-
|
70
|
-
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
71
|
-
gpr_free(msg);
|
72
|
+
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
73
|
+
absl::StrFormat("unparseable host:port: '%s'", name).c_str());
|
72
74
|
goto done;
|
73
75
|
}
|
74
76
|
if (port.empty()) {
|
75
77
|
if (default_port == NULL) {
|
76
|
-
|
77
|
-
|
78
|
-
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
|
79
|
-
gpr_free(msg);
|
78
|
+
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
79
|
+
absl::StrFormat("no port in name '%s'", name).c_str());
|
80
80
|
goto done;
|
81
81
|
}
|
82
82
|
port = default_port;
|
@@ -25,10 +25,13 @@
|
|
25
25
|
#include <stdint.h>
|
26
26
|
#include <string.h>
|
27
27
|
|
28
|
+
#include <string>
|
29
|
+
|
30
|
+
#include "absl/strings/str_cat.h"
|
31
|
+
|
28
32
|
#include <grpc/slice_buffer.h>
|
29
33
|
#include <grpc/support/alloc.h>
|
30
34
|
#include <grpc/support/log.h>
|
31
|
-
#include <grpc/support/string_util.h>
|
32
35
|
|
33
36
|
#include "src/core/lib/gpr/useful.h"
|
34
37
|
#include "src/core/lib/iomgr/combiner.h"
|
@@ -118,7 +121,7 @@ struct grpc_resource_user {
|
|
118
121
|
grpc_resource_user_link links[GRPC_RULIST_COUNT];
|
119
122
|
|
120
123
|
/* The name of this resource user, for debugging/tracing */
|
121
|
-
|
124
|
+
std::string name;
|
122
125
|
};
|
123
126
|
|
124
127
|
struct grpc_resource_quota {
|
@@ -181,7 +184,7 @@ struct grpc_resource_quota {
|
|
181
184
|
/* Roots of all resource user lists */
|
182
185
|
grpc_resource_user* roots[GRPC_RULIST_COUNT];
|
183
186
|
|
184
|
-
|
187
|
+
std::string name;
|
185
188
|
};
|
186
189
|
|
187
190
|
static void ru_unref_by(grpc_resource_user* resource_user, gpr_atm amount);
|
@@ -320,9 +323,9 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
|
|
320
323
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
321
324
|
gpr_log(GPR_INFO,
|
322
325
|
"RQ: check allocation for user %p shutdown=%" PRIdPTR
|
323
|
-
" free_pool=%" PRId64,
|
326
|
+
" free_pool=%" PRId64 " outstanding_allocations=%" PRId64,
|
324
327
|
resource_user, gpr_atm_no_barrier_load(&resource_user->shutdown),
|
325
|
-
resource_user->free_pool);
|
328
|
+
resource_user->free_pool, resource_user->outstanding_allocations);
|
326
329
|
}
|
327
330
|
if (gpr_atm_no_barrier_load(&resource_user->shutdown)) {
|
328
331
|
resource_user->allocating = false;
|
@@ -334,7 +337,9 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
|
|
334
337
|
resource_user->free_pool += aborted_allocations;
|
335
338
|
grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &resource_user->on_allocated);
|
336
339
|
gpr_mu_unlock(&resource_user->mu);
|
337
|
-
|
340
|
+
if (aborted_allocations > 0) {
|
341
|
+
ru_unref_by(resource_user, static_cast<gpr_atm>(aborted_allocations));
|
342
|
+
}
|
338
343
|
continue;
|
339
344
|
}
|
340
345
|
if (resource_user->free_pool < 0 &&
|
@@ -347,13 +352,13 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
|
|
347
352
|
gpr_log(GPR_INFO,
|
348
353
|
"RQ %s %s: grant alloc %" PRId64
|
349
354
|
" bytes; rq_free_pool -> %" PRId64,
|
350
|
-
resource_quota->name, resource_user->name, amt,
|
355
|
+
resource_quota->name.c_str(), resource_user->name.c_str(), amt,
|
351
356
|
resource_quota->free_pool);
|
352
357
|
}
|
353
358
|
} else if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace) &&
|
354
359
|
resource_user->free_pool >= 0) {
|
355
360
|
gpr_log(GPR_INFO, "RQ %s %s: discard already satisfied alloc request",
|
356
|
-
resource_quota->name, resource_user->name);
|
361
|
+
resource_quota->name.c_str(), resource_user->name.c_str());
|
357
362
|
}
|
358
363
|
if (resource_user->free_pool >= 0) {
|
359
364
|
resource_user->allocating = false;
|
@@ -386,7 +391,7 @@ static bool rq_reclaim_from_per_user_free_pool(
|
|
386
391
|
gpr_log(GPR_INFO,
|
387
392
|
"RQ %s %s: reclaim_from_per_user_free_pool %" PRId64
|
388
393
|
" bytes; rq_free_pool -> %" PRId64,
|
389
|
-
resource_quota->name, resource_user->name, amt,
|
394
|
+
resource_quota->name.c_str(), resource_user->name.c_str(), amt,
|
390
395
|
resource_quota->free_pool);
|
391
396
|
}
|
392
397
|
gpr_mu_unlock(&resource_user->mu);
|
@@ -396,7 +401,7 @@ static bool rq_reclaim_from_per_user_free_pool(
|
|
396
401
|
gpr_log(GPR_INFO,
|
397
402
|
"RQ %s %s: failed to reclaim_from_per_user_free_pool; "
|
398
403
|
"free_pool = %" PRId64 "; rq_free_pool = %" PRId64,
|
399
|
-
resource_quota->name, resource_user->name,
|
404
|
+
resource_quota->name.c_str(), resource_user->name.c_str(),
|
400
405
|
resource_user->free_pool, resource_quota->free_pool);
|
401
406
|
}
|
402
407
|
gpr_mu_unlock(&resource_user->mu);
|
@@ -413,8 +418,9 @@ static bool rq_reclaim(grpc_resource_quota* resource_quota, bool destructive) {
|
|
413
418
|
grpc_resource_user* resource_user = rulist_pop_head(resource_quota, list);
|
414
419
|
if (resource_user == nullptr) return false;
|
415
420
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
416
|
-
gpr_log(GPR_INFO, "RQ %s %s: initiate %s reclamation",
|
417
|
-
|
421
|
+
gpr_log(GPR_INFO, "RQ %s %s: initiate %s reclamation",
|
422
|
+
resource_quota->name.c_str(), resource_user->name.c_str(),
|
423
|
+
destructive ? "destructive" : "benign");
|
418
424
|
}
|
419
425
|
resource_quota->reclaiming = true;
|
420
426
|
grpc_resource_quota_ref_internal(resource_quota);
|
@@ -583,8 +589,7 @@ static void ru_destroy(void* ru, grpc_error* /*error*/) {
|
|
583
589
|
}
|
584
590
|
grpc_resource_quota_unref_internal(resource_user->resource_quota);
|
585
591
|
gpr_mu_destroy(&resource_user->mu);
|
586
|
-
|
587
|
-
gpr_free(resource_user);
|
592
|
+
delete resource_user;
|
588
593
|
}
|
589
594
|
|
590
595
|
static void ru_alloc_slices(
|
@@ -638,8 +643,7 @@ static void rq_reclamation_done(void* rq, grpc_error* /*error*/) {
|
|
638
643
|
|
639
644
|
/* Public API */
|
640
645
|
grpc_resource_quota* grpc_resource_quota_create(const char* name) {
|
641
|
-
grpc_resource_quota* resource_quota =
|
642
|
-
static_cast<grpc_resource_quota*>(gpr_malloc(sizeof(*resource_quota)));
|
646
|
+
grpc_resource_quota* resource_quota = new grpc_resource_quota;
|
643
647
|
gpr_ref_init(&resource_quota->refs, 1);
|
644
648
|
resource_quota->combiner = grpc_combiner_create();
|
645
649
|
resource_quota->free_pool = INT64_MAX;
|
@@ -653,10 +657,10 @@ grpc_resource_quota* grpc_resource_quota_create(const char* name) {
|
|
653
657
|
resource_quota->reclaiming = false;
|
654
658
|
gpr_atm_no_barrier_store(&resource_quota->memory_usage_estimation, 0);
|
655
659
|
if (name != nullptr) {
|
656
|
-
resource_quota->name =
|
660
|
+
resource_quota->name = name;
|
657
661
|
} else {
|
658
|
-
|
659
|
-
|
662
|
+
resource_quota->name =
|
663
|
+
absl::StrCat("anonymous_pool_", (intptr_t)resource_quota);
|
660
664
|
}
|
661
665
|
GRPC_CLOSURE_INIT(&resource_quota->rq_step_closure, rq_step, resource_quota,
|
662
666
|
nullptr);
|
@@ -673,9 +677,8 @@ void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota) {
|
|
673
677
|
// No outstanding thread quota
|
674
678
|
GPR_ASSERT(resource_quota->num_threads_allocated == 0);
|
675
679
|
GRPC_COMBINER_UNREF(resource_quota->combiner, "resource_quota");
|
676
|
-
gpr_free(resource_quota->name);
|
677
680
|
gpr_mu_destroy(&resource_quota->thread_count_mu);
|
678
|
-
|
681
|
+
delete resource_quota;
|
679
682
|
}
|
680
683
|
}
|
681
684
|
|
@@ -772,8 +775,7 @@ const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable(void) {
|
|
772
775
|
|
773
776
|
grpc_resource_user* grpc_resource_user_create(
|
774
777
|
grpc_resource_quota* resource_quota, const char* name) {
|
775
|
-
grpc_resource_user* resource_user =
|
776
|
-
static_cast<grpc_resource_user*>(gpr_malloc(sizeof(*resource_user)));
|
778
|
+
grpc_resource_user* resource_user = new grpc_resource_user;
|
777
779
|
resource_user->resource_quota =
|
778
780
|
grpc_resource_quota_ref_internal(resource_quota);
|
779
781
|
GRPC_CLOSURE_INIT(&resource_user->allocate_closure, &ru_allocate,
|
@@ -803,10 +805,10 @@ grpc_resource_user* grpc_resource_user_create(
|
|
803
805
|
resource_user->links[i].next = resource_user->links[i].prev = nullptr;
|
804
806
|
}
|
805
807
|
if (name != nullptr) {
|
806
|
-
resource_user->name =
|
808
|
+
resource_user->name = name;
|
807
809
|
} else {
|
808
|
-
|
809
|
-
|
810
|
+
resource_user->name =
|
811
|
+
absl::StrCat("anonymous_resource_user_", (intptr_t)resource_user);
|
810
812
|
}
|
811
813
|
return resource_user;
|
812
814
|
}
|
@@ -888,8 +890,8 @@ static bool resource_user_alloc_locked(grpc_resource_user* resource_user,
|
|
888
890
|
resource_user->free_pool -= static_cast<int64_t>(size);
|
889
891
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
890
892
|
gpr_log(GPR_INFO, "RQ %s %s: alloc %" PRIdPTR "; free_pool -> %" PRId64,
|
891
|
-
resource_user->resource_quota->name,
|
892
|
-
resource_user->free_pool);
|
893
|
+
resource_user->resource_quota->name.c_str(),
|
894
|
+
resource_user->name.c_str(), size, resource_user->free_pool);
|
893
895
|
}
|
894
896
|
if (GPR_LIKELY(resource_user->free_pool >= 0)) return true;
|
895
897
|
// Slow path: We need to wait for the free pool to refill.
|
@@ -949,8 +951,8 @@ void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) {
|
|
949
951
|
resource_user->free_pool += static_cast<int64_t>(size);
|
950
952
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
951
953
|
gpr_log(GPR_INFO, "RQ %s %s: free %" PRIdPTR "; free_pool -> %" PRId64,
|
952
|
-
resource_user->resource_quota->name,
|
953
|
-
resource_user->free_pool);
|
954
|
+
resource_user->resource_quota->name.c_str(),
|
955
|
+
resource_user->name.c_str(), size, resource_user->free_pool);
|
954
956
|
}
|
955
957
|
bool is_bigger_than_zero = resource_user->free_pool > 0;
|
956
958
|
if (is_bigger_than_zero && was_zero_or_negative &&
|
@@ -975,7 +977,8 @@ void grpc_resource_user_post_reclaimer(grpc_resource_user* resource_user,
|
|
975
977
|
void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user) {
|
976
978
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
|
977
979
|
gpr_log(GPR_INFO, "RQ %s %s: reclamation complete",
|
978
|
-
resource_user->resource_quota->name,
|
980
|
+
resource_user->resource_quota->name.c_str(),
|
981
|
+
resource_user->name.c_str());
|
979
982
|
}
|
980
983
|
resource_user->resource_quota->combiner->Run(
|
981
984
|
&resource_user->resource_quota->rq_reclamation_done_closure,
|