grpc 1.66.0.pre5 → 1.67.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +19 -10
- data/include/grpc/credentials.h +1 -1
- data/include/grpc/event_engine/README.md +1 -1
- data/include/grpc/event_engine/internal/slice_cast.h +1 -1
- data/include/grpc/event_engine/slice.h +0 -1
- data/include/grpc/event_engine/slice_buffer.h +0 -1
- data/include/grpc/grpc_crl_provider.h +1 -1
- data/include/grpc/impl/channel_arg_names.h +1 -1
- data/include/grpc/support/log.h +34 -32
- data/include/grpc/support/sync_generic.h +2 -4
- data/src/core/channelz/channelz.cc +0 -1
- data/src/core/channelz/channelz_registry.cc +0 -1
- data/src/core/client_channel/client_channel.cc +10 -7
- data/src/core/client_channel/client_channel.h +1 -1
- data/src/core/client_channel/client_channel_filter.cc +21 -18
- data/src/core/client_channel/client_channel_filter.h +1 -1
- data/src/core/client_channel/client_channel_internal.h +0 -2
- data/src/core/client_channel/config_selector.h +0 -1
- data/src/core/client_channel/dynamic_filters.cc +0 -2
- data/src/core/client_channel/local_subchannel_pool.cc +0 -2
- data/src/core/client_channel/retry_filter.h +0 -1
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +175 -257
- data/src/core/client_channel/subchannel.cc +21 -27
- data/src/core/client_channel/subchannel_stream_client.cc +1 -1
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +8 -9
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +0 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -4
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +167 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +82 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +81 -0
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +87 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +7 -9
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -4
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -7
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +0 -2
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +0 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +288 -265
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -1
- data/src/core/ext/transport/chttp2/transport/frame.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +3 -4
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +37 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +27 -6
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +21 -32
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +6 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -1
- data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +22 -22
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +431 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +129 -0
- data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +33 -0
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +16 -0
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +13 -2
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +397 -22
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +94 -20
- data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +2 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +86 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +47 -0
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +108 -107
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +101 -78
- data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +10 -0
- data/src/core/handshaker/handshaker.cc +21 -29
- data/src/core/handshaker/security/secure_endpoint.cc +3 -3
- data/src/core/handshaker/security/security_handshaker.cc +60 -72
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +0 -1
- data/src/core/lib/backoff/backoff.cc +7 -10
- data/src/core/lib/backoff/backoff.h +4 -6
- data/src/core/lib/channel/channel_stack.cc +0 -1
- data/src/core/lib/channel/channel_stack.h +0 -1
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -1
- data/src/core/lib/channel/connected_channel.cc +0 -1
- data/src/core/lib/channel/promise_based_filter.cc +146 -194
- data/src/core/lib/channel/promise_based_filter.h +1 -1
- data/src/core/lib/compression/compression_internal.cc +0 -1
- data/src/core/lib/config/config_vars.cc +11 -1
- data/src/core/lib/config/config_vars.h +8 -0
- data/src/core/lib/config/core_configuration.cc +0 -1
- data/src/core/lib/config/core_configuration.h +0 -1
- data/src/core/lib/debug/event_log.cc +0 -1
- data/src/core/lib/debug/trace_flags.cc +4 -18
- data/src/core/lib/debug/trace_flags.h +2 -5
- data/src/core/lib/debug/trace_impl.h +6 -0
- data/src/core/lib/event_engine/ares_resolver.cc +89 -56
- data/src/core/lib/event_engine/ares_resolver.h +0 -9
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +14 -1
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +1 -1
- data/src/core/lib/event_engine/forkable.cc +0 -1
- data/src/core/lib/event_engine/forkable.h +0 -1
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +4 -4
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +9 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +0 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -2
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -9
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +0 -1
- data/src/core/lib/event_engine/resolved_address.cc +0 -1
- data/src/core/lib/event_engine/slice.cc +0 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +0 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +3 -5
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +121 -93
- data/src/core/lib/experiments/config.cc +12 -10
- data/src/core/lib/experiments/experiments.cc +45 -66
- data/src/core/lib/experiments/experiments.h +22 -27
- data/src/core/lib/gprpp/chunked_vector.h +0 -1
- data/src/core/lib/gprpp/down_cast.h +0 -1
- data/src/core/lib/gprpp/host_port.cc +0 -1
- data/src/core/lib/gprpp/load_file.cc +0 -1
- data/src/core/lib/gprpp/mpscq.h +0 -1
- data/src/core/lib/gprpp/single_set_ptr.h +0 -1
- data/src/core/lib/gprpp/status_helper.cc +0 -1
- data/src/core/lib/gprpp/sync.h +0 -1
- data/src/core/lib/gprpp/table.h +28 -0
- data/src/core/lib/gprpp/thd.h +0 -1
- data/src/core/lib/gprpp/time.h +0 -1
- data/src/core/lib/gprpp/time_util.cc +0 -1
- data/src/core/lib/gprpp/windows/directory_reader.cc +0 -2
- data/src/core/lib/gprpp/windows/thd.cc +0 -1
- data/src/core/lib/gprpp/work_serializer.cc +23 -34
- data/src/core/lib/iomgr/buffer_list.cc +0 -1
- data/src/core/lib/iomgr/call_combiner.h +6 -8
- data/src/core/lib/iomgr/cfstream_handle.cc +6 -8
- data/src/core/lib/iomgr/closure.h +5 -8
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +17 -22
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +0 -1
- data/src/core/lib/iomgr/error.h +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +13 -18
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +47 -85
- data/src/core/lib/iomgr/ev_poll_posix.cc +17 -24
- data/src/core/lib/iomgr/ev_posix.cc +55 -44
- data/src/core/lib/iomgr/ev_posix.h +0 -5
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +7 -9
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +3 -4
- data/src/core/lib/iomgr/exec_ctx.cc +6 -9
- data/src/core/lib/iomgr/exec_ctx.h +26 -16
- data/src/core/lib/iomgr/executor.cc +43 -33
- data/src/core/lib/iomgr/fork_windows.cc +0 -1
- data/src/core/lib/iomgr/internal_errqueue.cc +0 -1
- data/src/core/lib/iomgr/iocp_windows.cc +0 -1
- data/src/core/lib/iomgr/iomgr_windows.cc +0 -2
- data/src/core/lib/iomgr/lockfree_event.cc +7 -11
- data/src/core/lib/iomgr/polling_entity.cc +10 -3
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address.cc +0 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +0 -1
- data/src/core/lib/iomgr/resolve_address_windows.cc +0 -1
- data/src/core/lib/iomgr/sockaddr_utils_posix.cc +0 -1
- data/src/core/lib/iomgr/socket_mutator.cc +0 -1
- data/src/core/lib/iomgr/socket_utils_linux.cc +0 -2
- data/src/core/lib/iomgr/socket_utils_posix.cc +0 -1
- data/src/core/lib/iomgr/socket_utils_windows.cc +0 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +7 -12
- data/src/core/lib/iomgr/tcp_client_posix.cc +8 -12
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +32 -68
- data/src/core/lib/iomgr/tcp_server_posix.cc +7 -11
- data/src/core/lib/iomgr/tcp_windows.cc +4 -12
- data/src/core/lib/iomgr/timer_generic.cc +46 -65
- data/src/core/lib/iomgr/timer_manager.cc +4 -5
- data/src/core/lib/iomgr/unix_sockets_posix.cc +0 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -2
- data/src/core/lib/iomgr/vsock.cc +0 -1
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
- data/src/core/lib/promise/activity.h +0 -1
- data/src/core/lib/promise/context.h +0 -1
- data/src/core/lib/promise/detail/join_state.h +44 -44
- data/src/core/lib/promise/detail/seq_state.h +1101 -1356
- data/src/core/lib/promise/for_each.h +8 -15
- data/src/core/lib/promise/interceptor_list.h +17 -27
- data/src/core/lib/promise/latch.h +16 -24
- data/src/core/lib/promise/map.h +1 -1
- data/src/core/lib/promise/party.cc +238 -114
- data/src/core/lib/promise/party.h +105 -308
- data/src/core/lib/promise/pipe.h +3 -4
- data/src/core/lib/promise/poll.h +0 -1
- data/src/core/lib/promise/status_flag.h +0 -1
- data/src/core/lib/resource_quota/connection_quota.cc +0 -1
- data/src/core/lib/resource_quota/memory_quota.cc +11 -19
- data/src/core/lib/resource_quota/memory_quota.h +2 -4
- data/src/core/lib/resource_quota/periodic_update.cc +2 -3
- data/src/core/lib/resource_quota/thread_quota.cc +0 -1
- data/src/core/lib/security/authorization/audit_logging.cc +0 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +0 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +14 -19
- data/src/core/lib/security/authorization/stdout_logger.cc +0 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +0 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +0 -1
- data/src/core/lib/security/credentials/call_creds_util.cc +0 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +0 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -0
- data/src/core/lib/security/credentials/credentials.h +1 -2
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +322 -324
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +53 -42
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +391 -353
- data/src/core/lib/security/credentials/external/external_account_credentials.h +121 -51
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +83 -44
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +27 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +91 -116
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +14 -17
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -0
- data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +196 -0
- data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -41
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +163 -259
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +34 -56
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -16
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +0 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +0 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +0 -1
- data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +298 -0
- data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +176 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +0 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +0 -1
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +0 -1
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +0 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +4 -6
- data/src/core/lib/slice/percent_encoding.cc +0 -1
- data/src/core/lib/slice/slice.cc +0 -1
- data/src/core/lib/slice/slice.h +0 -1
- data/src/core/lib/slice/slice_buffer.cc +0 -1
- data/src/core/lib/slice/slice_internal.h +0 -1
- data/src/core/lib/slice/slice_refcount.h +6 -8
- data/src/core/lib/surface/byte_buffer_reader.cc +0 -1
- data/src/core/lib/surface/call.cc +3 -5
- data/src/core/lib/surface/call_utils.h +0 -1
- data/src/core/lib/surface/channel.cc +0 -1
- data/src/core/lib/surface/channel_create.cc +0 -1
- data/src/core/lib/surface/channel_init.h +0 -1
- data/src/core/lib/surface/client_call.cc +0 -1
- data/src/core/lib/surface/client_call.h +0 -1
- data/src/core/lib/surface/completion_queue.cc +28 -4
- data/src/core/lib/surface/completion_queue_factory.cc +0 -1
- data/src/core/lib/surface/filter_stack_call.cc +9 -9
- data/src/core/lib/surface/filter_stack_call.h +0 -1
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server_call.cc +0 -1
- data/src/core/lib/surface/server_call.h +0 -1
- data/src/core/lib/surface/validate_metadata.h +0 -1
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +9 -12
- data/src/core/lib/transport/bdp_estimator.h +6 -8
- data/src/core/lib/transport/call_arena_allocator.cc +2 -16
- data/src/core/lib/transport/call_arena_allocator.h +20 -5
- data/src/core/lib/transport/call_filters.cc +6 -9
- data/src/core/lib/transport/call_spine.h +24 -13
- data/src/core/lib/transport/connectivity_state.cc +34 -42
- data/src/core/lib/transport/metadata_batch.h +41 -1
- data/src/core/lib/transport/timeout_encoding.cc +0 -1
- data/src/core/lib/transport/transport.h +6 -8
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/lib/uri/uri_parser.cc +0 -1
- data/src/core/load_balancing/grpclb/grpclb.cc +55 -71
- data/src/core/load_balancing/health_check_client.cc +31 -42
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +99 -129
- data/src/core/load_balancing/pick_first/pick_first.cc +168 -228
- data/src/core/load_balancing/priority/priority.cc +77 -106
- data/src/core/load_balancing/ring_hash/ring_hash.cc +32 -46
- data/src/core/load_balancing/rls/rls.cc +142 -187
- data/src/core/load_balancing/round_robin/round_robin.cc +36 -55
- data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +0 -1
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +85 -110
- data/src/core/load_balancing/weighted_target/weighted_target.cc +52 -75
- data/src/core/load_balancing/xds/cds.cc +26 -43
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +57 -54
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +36 -50
- data/src/core/load_balancing/xds/xds_override_host.cc +95 -131
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +15 -23
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +3 -0
- data/src/core/resolver/binder/binder_resolver.cc +0 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +62 -44
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +110 -89
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +132 -96
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -7
- data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -1
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +40 -39
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -14
- data/src/core/resolver/endpoint_addresses.cc +0 -1
- data/src/core/resolver/fake/fake_resolver.cc +0 -1
- data/src/core/resolver/polling_resolver.cc +6 -15
- data/src/core/resolver/polling_resolver.h +1 -1
- data/src/core/resolver/xds/xds_config.cc +96 -0
- data/src/core/resolver/xds/xds_config.h +109 -0
- data/src/core/resolver/xds/xds_dependency_manager.cc +59 -154
- data/src/core/resolver/xds/xds_dependency_manager.h +1 -69
- data/src/core/resolver/xds/xds_resolver.cc +51 -55
- data/src/core/server/server.cc +2 -2
- data/src/core/server/server_config_selector_filter.cc +0 -1
- data/src/core/server/xds_server_config_fetcher.cc +4 -6
- data/src/core/service_config/service_config_call_data.h +2 -3
- data/src/core/service_config/service_config_channel_arg_filter.cc +0 -1
- data/src/core/service_config/service_config_impl.h +0 -1
- data/src/core/telemetry/call_tracer.cc +0 -1
- data/src/core/telemetry/metrics.h +0 -1
- data/src/core/telemetry/stats_data.cc +67 -0
- data/src/core/telemetry/stats_data.h +48 -0
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +0 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +0 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +0 -1
- data/src/core/tsi/fake_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -1
- data/src/core/util/alloc.cc +0 -1
- data/src/core/util/gcp_metadata_query.cc +0 -1
- data/src/core/util/http_client/httpcli.cc +12 -15
- data/src/core/util/http_client/httpcli.h +16 -11
- data/src/core/util/http_client/parser.cc +3 -4
- data/src/core/util/json/json_reader.cc +0 -1
- data/src/core/util/latent_see.cc +29 -9
- data/src/core/util/latent_see.h +122 -27
- data/src/core/util/log.cc +36 -55
- data/src/core/util/lru_cache.h +104 -0
- data/src/core/util/msys/tmpfile.cc +0 -1
- data/src/core/util/posix/sync.cc +0 -1
- data/src/core/util/posix/time.cc +0 -1
- data/src/core/util/ring_buffer.h +123 -0
- data/src/core/util/spinlock.h +1 -2
- data/src/core/util/string.cc +7 -7
- data/src/core/util/sync.cc +0 -1
- data/src/core/util/sync_abseil.cc +0 -1
- data/src/core/util/time.cc +0 -1
- data/src/core/util/unique_ptr_with_bitset.h +86 -0
- data/src/core/util/useful.h +0 -24
- data/src/core/util/windows/cpu.cc +0 -1
- data/src/core/util/windows/sync.cc +0 -1
- data/src/core/util/windows/time.cc +0 -1
- data/src/core/util/windows/tmpfile.cc +0 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +0 -32
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +0 -5
- data/src/core/xds/grpc/xds_certificate_provider.cc +0 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +11 -16
- data/src/core/xds/grpc/xds_cluster.cc +2 -8
- data/src/core/xds/grpc/xds_cluster.h +4 -4
- data/src/core/xds/grpc/xds_cluster_parser.cc +58 -96
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +0 -1
- data/src/core/xds/grpc/xds_common_types_parser.cc +4 -4
- data/src/core/xds/grpc/xds_common_types_parser.h +17 -0
- data/src/core/xds/grpc/xds_endpoint_parser.cc +14 -14
- data/src/core/xds/grpc/xds_http_fault_filter.cc +15 -6
- data/src/core/xds/grpc/xds_http_fault_filter.h +5 -1
- data/src/core/xds/grpc/xds_http_filter.h +11 -1
- data/src/core/xds/grpc/xds_http_filter_registry.cc +7 -1
- data/src/core/xds/grpc/xds_http_filter_registry.h +8 -1
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +142 -0
- data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +61 -0
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +14 -6
- data/src/core/xds/grpc/xds_http_rbac_filter.h +5 -1
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +9 -1
- data/src/core/xds/grpc/xds_http_stateful_session_filter.h +5 -1
- data/src/core/xds/grpc/xds_lb_policy_registry.cc +14 -16
- data/src/core/xds/grpc/xds_listener_parser.cc +10 -11
- data/src/core/xds/grpc/xds_metadata.cc +62 -0
- data/src/core/xds/grpc/xds_metadata.h +127 -0
- data/src/core/xds/grpc/xds_metadata_parser.cc +143 -0
- data/src/core/xds/grpc/xds_metadata_parser.h +36 -0
- data/src/core/xds/grpc/xds_route_config_parser.cc +12 -17
- data/src/core/xds/grpc/xds_routing.cc +57 -22
- data/src/core/xds/grpc/xds_routing.h +10 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +0 -1
- data/src/core/xds/xds_client/xds_client.cc +124 -165
- data/src/core/xds/xds_client/xds_client_stats.cc +20 -27
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_call_credentials.c +34 -27
- data/src/ruby/ext/grpc/rb_channel.c +22 -16
- data/src/ruby/ext/grpc/rb_event_thread.c +3 -2
- data/src/ruby/ext/grpc/rb_grpc.c +9 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/ext/grpc/rb_server.c +10 -8
- data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/call_spec.rb +53 -40
- data/src/ruby/spec/channel_spec.rb +4 -2
- data/src/ruby/spec/client_server_spec.rb +148 -507
- data/src/ruby/spec/generic/active_call_spec.rb +64 -86
- data/src/ruby/spec/support/services.rb +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand/fork_detect.h → bcm_support.h} +51 -6
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +43 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +160 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +79 -78
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c → div.c.inc} +146 -179
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c → random.c.inc} +6 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c → sqrt.c.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c → e_aes.c.inc} +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c → ec_key.c.inc} +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c → p256-nistz.c.inc} +104 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +65 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c → ecdsa.c.inc} +52 -107
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +28 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c → rand.c.inc} +26 -40
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c → padding.c.inc} +2 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c → rsa_impl.c.inc} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c → self_check.c.inc} +9 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c → service_indicator.c.inc} +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +293 -2
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +69 -14
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +73 -0
- data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.c +1687 -0
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +90 -0
- data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +1097 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/fork_detect.c +26 -28
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +19 -3
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +37 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +9 -1
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/urandom.c +19 -19
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +14 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +14 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +13 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +136 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +246 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +3 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +22 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +35 -5
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -6
- data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +6 -1
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -1
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +289 -55
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -0
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +69 -38
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +14 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +107 -14
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +44 -16
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +86 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +97 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +31 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +6 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +18 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +96 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +15 -5
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +3 -23
- metadata +113 -87
- data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -45
- data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
- data/src/core/util/android/log.cc +0 -48
- data/src/core/util/linux/log.cc +0 -69
- data/src/core/util/posix/log.cc +0 -69
- data/src/core/util/windows/log.cc +0 -73
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c → aes.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c → aes_nohw.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c → key_wrap.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c → mode_wrappers.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c → add.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c → x86_64-gcc.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c → bn.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c → bytes.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c → cmp.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c → ctx.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c → div_extra.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c → exponentiation.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c → gcd.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c → gcd_extra.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c → generic.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c → jacobi.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c → montgomery.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c → montgomery_inv.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c → mul.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c → prime.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c → rsaz_exp.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c → shift.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c → aead.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c → cipher.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c → e_aesccm.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c → cmac.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c → check.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c → dh.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c → digest.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c → digests.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c → digestsign.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c → ec.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c → ec_montgomery.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c → felem.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c → oct.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c → p224-64.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c → p256.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c → scalar.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c → simple.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c → simple_mul.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c → util.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c → wnaf.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c → ecdh.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c → hkdf.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c → hmac.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/{md4.c → md4.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/{md5.c → md5.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c → cbc.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c → cfb.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c → ctr.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c → gcm.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c → gcm_nohw.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c → ofb.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c → polyval.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c → ctrdrbg.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c → blinding.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c → rsa.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c → fips.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c → sha1.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c → sha256.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c → sha512.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c → kdf.c.inc} +0 -0
- /data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/getrandom_fillin.h +0 -0
@@ -65,7 +65,6 @@
|
|
65
65
|
#include "src/core/ext/transport/chttp2/transport/http2_settings.h"
|
66
66
|
#include "src/core/ext/transport/chttp2/transport/internal.h"
|
67
67
|
#include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
|
68
|
-
#include "src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h"
|
69
68
|
#include "src/core/ext/transport/chttp2/transport/ping_abuse_policy.h"
|
70
69
|
#include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
|
71
70
|
#include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
|
@@ -547,7 +546,6 @@ static void read_channel_args(grpc_chttp2_transport* t,
|
|
547
546
|
value = channel_args.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS).value_or(-1);
|
548
547
|
if (value >= 0) {
|
549
548
|
t->settings.mutable_local().SetMaxConcurrentStreams(value);
|
550
|
-
t->max_concurrent_streams_policy.SetTarget(value);
|
551
549
|
}
|
552
550
|
} else if (channel_args.Contains(GRPC_ARG_MAX_CONCURRENT_STREAMS)) {
|
553
551
|
VLOG(2) << GRPC_ARG_MAX_CONCURRENT_STREAMS
|
@@ -1026,6 +1024,7 @@ static const char* begin_writing_desc(bool partial) {
|
|
1026
1024
|
static void write_action_begin_locked(
|
1027
1025
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
1028
1026
|
grpc_error_handle /*error_ignored*/) {
|
1027
|
+
GRPC_LATENT_SEE_INNER_SCOPE("write_action_begin_locked");
|
1029
1028
|
CHECK(t->write_state != GRPC_CHTTP2_WRITE_STATE_IDLE);
|
1030
1029
|
grpc_chttp2_begin_write_result r;
|
1031
1030
|
if (!t->closed_with_error.ok()) {
|
@@ -1309,15 +1308,14 @@ void grpc_chttp2_complete_closure_step(grpc_chttp2_transport* t,
|
|
1309
1308
|
return;
|
1310
1309
|
}
|
1311
1310
|
closure->next_data.scratch -= CLOSURE_BARRIER_FIRST_REF_BIT;
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
}
|
1311
|
+
GRPC_TRACE_LOG(http, INFO)
|
1312
|
+
<< "complete_closure_step: t=" << t << " " << closure << " refs="
|
1313
|
+
<< (closure->next_data.scratch / CLOSURE_BARRIER_FIRST_REF_BIT)
|
1314
|
+
<< " flags="
|
1315
|
+
<< (closure->next_data.scratch % CLOSURE_BARRIER_FIRST_REF_BIT)
|
1316
|
+
<< " desc=" << desc << " err=" << grpc_core::StatusToString(error)
|
1317
|
+
<< " write_state=" << write_state_name(t->write_state)
|
1318
|
+
<< " whence=" << whence.file() << ":" << whence.line();
|
1321
1319
|
|
1322
1320
|
if (!error.ok()) {
|
1323
1321
|
grpc_error_handle cl_err =
|
@@ -1363,6 +1361,241 @@ static void log_metadata(const grpc_metadata_batch* md_batch, uint32_t id,
|
|
1363
1361
|
});
|
1364
1362
|
}
|
1365
1363
|
|
1364
|
+
static void send_initial_metadata_locked(
|
1365
|
+
grpc_transport_stream_op_batch* op, grpc_chttp2_stream* s,
|
1366
|
+
grpc_transport_stream_op_batch_payload* op_payload,
|
1367
|
+
grpc_chttp2_transport* t, grpc_closure* on_complete) {
|
1368
|
+
if (!grpc_core::IsCallTracerInTransportEnabled()) {
|
1369
|
+
if (s->call_tracer != nullptr) {
|
1370
|
+
s->call_tracer->RecordAnnotation(
|
1371
|
+
grpc_core::HttpAnnotation(grpc_core::HttpAnnotation::Type::kStart,
|
1372
|
+
gpr_now(GPR_CLOCK_REALTIME))
|
1373
|
+
.Add(s->t->flow_control.stats())
|
1374
|
+
.Add(s->flow_control.stats()));
|
1375
|
+
}
|
1376
|
+
} else if (grpc_core::IsTraceRecordCallopsEnabled()) {
|
1377
|
+
auto* call_tracer = s->arena->GetContext<grpc_core::CallTracerInterface>();
|
1378
|
+
if (call_tracer != nullptr && call_tracer->IsSampled()) {
|
1379
|
+
call_tracer->RecordAnnotation(
|
1380
|
+
grpc_core::HttpAnnotation(grpc_core::HttpAnnotation::Type::kStart,
|
1381
|
+
gpr_now(GPR_CLOCK_REALTIME))
|
1382
|
+
.Add(s->t->flow_control.stats())
|
1383
|
+
.Add(s->flow_control.stats()));
|
1384
|
+
}
|
1385
|
+
}
|
1386
|
+
if (t->is_client && t->channelz_socket != nullptr) {
|
1387
|
+
t->channelz_socket->RecordStreamStartedFromLocal();
|
1388
|
+
}
|
1389
|
+
CHECK_EQ(s->send_initial_metadata_finished, nullptr);
|
1390
|
+
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1391
|
+
|
1392
|
+
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1393
|
+
s->send_initial_metadata =
|
1394
|
+
op_payload->send_initial_metadata.send_initial_metadata;
|
1395
|
+
if (t->is_client) {
|
1396
|
+
s->deadline =
|
1397
|
+
std::min(s->deadline,
|
1398
|
+
s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
|
1399
|
+
.value_or(grpc_core::Timestamp::InfFuture()));
|
1400
|
+
}
|
1401
|
+
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1402
|
+
s->seen_error = true;
|
1403
|
+
}
|
1404
|
+
if (!s->write_closed) {
|
1405
|
+
if (t->is_client) {
|
1406
|
+
if (t->closed_with_error.ok()) {
|
1407
|
+
CHECK_EQ(s->id, 0u);
|
1408
|
+
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1409
|
+
maybe_start_some_streams(t);
|
1410
|
+
} else {
|
1411
|
+
s->trailing_metadata_buffer.Set(
|
1412
|
+
grpc_core::GrpcStreamNetworkState(),
|
1413
|
+
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1414
|
+
grpc_chttp2_cancel_stream(
|
1415
|
+
t, s,
|
1416
|
+
grpc_error_set_int(
|
1417
|
+
GRPC_ERROR_CREATE_REFERENCING("Transport closed",
|
1418
|
+
&t->closed_with_error, 1),
|
1419
|
+
grpc_core::StatusIntProperty::kRpcStatus,
|
1420
|
+
GRPC_STATUS_UNAVAILABLE),
|
1421
|
+
false);
|
1422
|
+
}
|
1423
|
+
} else {
|
1424
|
+
CHECK_NE(s->id, 0u);
|
1425
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1426
|
+
if (!(op->send_message &&
|
1427
|
+
(op->payload->send_message.flags & GRPC_WRITE_BUFFER_HINT))) {
|
1428
|
+
grpc_chttp2_initiate_write(
|
1429
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1430
|
+
}
|
1431
|
+
}
|
1432
|
+
} else {
|
1433
|
+
s->send_initial_metadata = nullptr;
|
1434
|
+
grpc_chttp2_complete_closure_step(
|
1435
|
+
t, &s->send_initial_metadata_finished,
|
1436
|
+
GRPC_ERROR_CREATE_REFERENCING(
|
1437
|
+
"Attempt to send initial metadata after stream was closed",
|
1438
|
+
&s->write_closed_error, 1),
|
1439
|
+
"send_initial_metadata_finished");
|
1440
|
+
}
|
1441
|
+
}
|
1442
|
+
|
1443
|
+
static void send_message_locked(
|
1444
|
+
grpc_transport_stream_op_batch* op, grpc_chttp2_stream* s,
|
1445
|
+
grpc_transport_stream_op_batch_payload* op_payload,
|
1446
|
+
grpc_chttp2_transport* t, grpc_closure* on_complete) {
|
1447
|
+
t->num_messages_in_next_write++;
|
1448
|
+
grpc_core::global_stats().IncrementHttp2SendMessageSize(
|
1449
|
+
op->payload->send_message.send_message->Length());
|
1450
|
+
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1451
|
+
s->send_message_finished = add_closure_barrier(op->on_complete);
|
1452
|
+
const uint32_t flags = op_payload->send_message.flags;
|
1453
|
+
if (s->write_closed) {
|
1454
|
+
op->payload->send_message.stream_write_closed = true;
|
1455
|
+
// We should NOT return an error here, so as to avoid a cancel OP being
|
1456
|
+
// started. The surface layer will notice that the stream has been closed
|
1457
|
+
// for writes and fail the send message op.
|
1458
|
+
grpc_chttp2_complete_closure_step(t, &s->send_message_finished,
|
1459
|
+
absl::OkStatus(),
|
1460
|
+
"fetching_send_message_finished");
|
1461
|
+
} else {
|
1462
|
+
uint8_t* frame_hdr = grpc_slice_buffer_tiny_add(&s->flow_controlled_buffer,
|
1463
|
+
GRPC_HEADER_SIZE_IN_BYTES);
|
1464
|
+
frame_hdr[0] = (flags & GRPC_WRITE_INTERNAL_COMPRESS) != 0;
|
1465
|
+
size_t len = op_payload->send_message.send_message->Length();
|
1466
|
+
frame_hdr[1] = static_cast<uint8_t>(len >> 24);
|
1467
|
+
frame_hdr[2] = static_cast<uint8_t>(len >> 16);
|
1468
|
+
frame_hdr[3] = static_cast<uint8_t>(len >> 8);
|
1469
|
+
frame_hdr[4] = static_cast<uint8_t>(len);
|
1470
|
+
|
1471
|
+
s->call_tracer_wrapper.RecordOutgoingBytes(
|
1472
|
+
{GRPC_HEADER_SIZE_IN_BYTES, len, 0});
|
1473
|
+
s->next_message_end_offset =
|
1474
|
+
s->flow_controlled_bytes_written +
|
1475
|
+
static_cast<int64_t>(s->flow_controlled_buffer.length) +
|
1476
|
+
static_cast<int64_t>(len);
|
1477
|
+
if (flags & GRPC_WRITE_BUFFER_HINT) {
|
1478
|
+
s->next_message_end_offset -= t->write_buffer_size;
|
1479
|
+
s->write_buffering = true;
|
1480
|
+
} else {
|
1481
|
+
s->write_buffering = false;
|
1482
|
+
}
|
1483
|
+
|
1484
|
+
grpc_slice* const slices =
|
1485
|
+
op_payload->send_message.send_message->c_slice_buffer()->slices;
|
1486
|
+
grpc_slice* const end =
|
1487
|
+
slices + op_payload->send_message.send_message->Count();
|
1488
|
+
for (grpc_slice* slice = slices; slice != end; slice++) {
|
1489
|
+
grpc_slice_buffer_add(&s->flow_controlled_buffer,
|
1490
|
+
grpc_core::CSliceRef(*slice));
|
1491
|
+
}
|
1492
|
+
|
1493
|
+
int64_t notify_offset = s->next_message_end_offset;
|
1494
|
+
if (notify_offset <= s->flow_controlled_bytes_written) {
|
1495
|
+
grpc_chttp2_complete_closure_step(t, &s->send_message_finished,
|
1496
|
+
absl::OkStatus(),
|
1497
|
+
"fetching_send_message_finished");
|
1498
|
+
} else {
|
1499
|
+
grpc_chttp2_write_cb* cb = t->write_cb_pool;
|
1500
|
+
if (cb == nullptr) {
|
1501
|
+
cb = static_cast<grpc_chttp2_write_cb*>(gpr_malloc(sizeof(*cb)));
|
1502
|
+
} else {
|
1503
|
+
t->write_cb_pool = cb->next;
|
1504
|
+
}
|
1505
|
+
cb->call_at_byte = notify_offset;
|
1506
|
+
cb->closure = s->send_message_finished;
|
1507
|
+
s->send_message_finished = nullptr;
|
1508
|
+
grpc_chttp2_write_cb** list = flags & GRPC_WRITE_THROUGH
|
1509
|
+
? &s->on_write_finished_cbs
|
1510
|
+
: &s->on_flow_controlled_cbs;
|
1511
|
+
cb->next = *list;
|
1512
|
+
*list = cb;
|
1513
|
+
}
|
1514
|
+
|
1515
|
+
if (s->id != 0 && (!s->write_buffering || s->flow_controlled_buffer.length >
|
1516
|
+
t->write_buffer_size)) {
|
1517
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1518
|
+
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE);
|
1519
|
+
}
|
1520
|
+
}
|
1521
|
+
}
|
1522
|
+
|
1523
|
+
static void send_trailing_metadata_locked(
|
1524
|
+
grpc_transport_stream_op_batch* op, grpc_chttp2_stream* s,
|
1525
|
+
grpc_transport_stream_op_batch_payload* op_payload,
|
1526
|
+
grpc_chttp2_transport* t, grpc_closure* on_complete) {
|
1527
|
+
CHECK_EQ(s->send_trailing_metadata_finished, nullptr);
|
1528
|
+
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1529
|
+
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1530
|
+
s->send_trailing_metadata =
|
1531
|
+
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1532
|
+
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1533
|
+
s->write_buffering = false;
|
1534
|
+
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1535
|
+
s->seen_error = true;
|
1536
|
+
}
|
1537
|
+
if (s->write_closed) {
|
1538
|
+
s->send_trailing_metadata = nullptr;
|
1539
|
+
s->sent_trailing_metadata_op = nullptr;
|
1540
|
+
grpc_chttp2_complete_closure_step(
|
1541
|
+
t, &s->send_trailing_metadata_finished,
|
1542
|
+
op->payload->send_trailing_metadata.send_trailing_metadata->empty()
|
1543
|
+
? absl::OkStatus()
|
1544
|
+
: GRPC_ERROR_CREATE("Attempt to send trailing metadata after "
|
1545
|
+
"stream was closed"),
|
1546
|
+
"send_trailing_metadata_finished");
|
1547
|
+
} else if (s->id != 0) {
|
1548
|
+
// TODO(ctiller): check if there's flow control for any outstanding
|
1549
|
+
// bytes before going writable
|
1550
|
+
grpc_chttp2_mark_stream_writable(t, s);
|
1551
|
+
grpc_chttp2_initiate_write(
|
1552
|
+
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1553
|
+
}
|
1554
|
+
}
|
1555
|
+
|
1556
|
+
static void recv_initial_metadata_locked(
|
1557
|
+
grpc_chttp2_stream* s, grpc_transport_stream_op_batch_payload* op_payload,
|
1558
|
+
grpc_chttp2_transport* t) {
|
1559
|
+
CHECK_EQ(s->recv_initial_metadata_ready, nullptr);
|
1560
|
+
s->recv_initial_metadata_ready =
|
1561
|
+
op_payload->recv_initial_metadata.recv_initial_metadata_ready;
|
1562
|
+
s->recv_initial_metadata =
|
1563
|
+
op_payload->recv_initial_metadata.recv_initial_metadata;
|
1564
|
+
s->trailing_metadata_available =
|
1565
|
+
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1566
|
+
if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
|
1567
|
+
*s->trailing_metadata_available = true;
|
1568
|
+
}
|
1569
|
+
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1570
|
+
}
|
1571
|
+
|
1572
|
+
static void recv_message_locked(
|
1573
|
+
grpc_chttp2_stream* s, grpc_transport_stream_op_batch_payload* op_payload,
|
1574
|
+
grpc_chttp2_transport* t) {
|
1575
|
+
CHECK_EQ(s->recv_message_ready, nullptr);
|
1576
|
+
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1577
|
+
s->recv_message = op_payload->recv_message.recv_message;
|
1578
|
+
s->recv_message->emplace();
|
1579
|
+
s->recv_message_flags = op_payload->recv_message.flags;
|
1580
|
+
s->call_failed_before_recv_message =
|
1581
|
+
op_payload->recv_message.call_failed_before_recv_message;
|
1582
|
+
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
1583
|
+
}
|
1584
|
+
|
1585
|
+
static void recv_trailing_metadata_locked(
|
1586
|
+
grpc_chttp2_stream* s, grpc_transport_stream_op_batch_payload* op_payload,
|
1587
|
+
grpc_chttp2_transport* t) {
|
1588
|
+
CHECK_EQ(s->collecting_stats, nullptr);
|
1589
|
+
s->collecting_stats = op_payload->recv_trailing_metadata.collect_stats;
|
1590
|
+
CHECK_EQ(s->recv_trailing_metadata_finished, nullptr);
|
1591
|
+
s->recv_trailing_metadata_finished =
|
1592
|
+
op_payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1593
|
+
s->recv_trailing_metadata =
|
1594
|
+
op_payload->recv_trailing_metadata.recv_trailing_metadata;
|
1595
|
+
s->final_metadata_requested = true;
|
1596
|
+
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
1597
|
+
}
|
1598
|
+
|
1366
1599
|
static void perform_stream_op_locked(void* stream_op,
|
1367
1600
|
grpc_error_handle /*error_ignored*/) {
|
1368
1601
|
grpc_transport_stream_op_batch* op =
|
@@ -1406,225 +1639,27 @@ static void perform_stream_op_locked(void* stream_op,
|
|
1406
1639
|
}
|
1407
1640
|
|
1408
1641
|
if (op->send_initial_metadata) {
|
1409
|
-
|
1410
|
-
if (s->call_tracer != nullptr) {
|
1411
|
-
s->call_tracer->RecordAnnotation(
|
1412
|
-
grpc_core::HttpAnnotation(grpc_core::HttpAnnotation::Type::kStart,
|
1413
|
-
gpr_now(GPR_CLOCK_REALTIME))
|
1414
|
-
.Add(s->t->flow_control.stats())
|
1415
|
-
.Add(s->flow_control.stats()));
|
1416
|
-
}
|
1417
|
-
} else if (grpc_core::IsTraceRecordCallopsEnabled()) {
|
1418
|
-
auto* call_tracer =
|
1419
|
-
s->arena->GetContext<grpc_core::CallTracerInterface>();
|
1420
|
-
if (call_tracer != nullptr && call_tracer->IsSampled()) {
|
1421
|
-
call_tracer->RecordAnnotation(
|
1422
|
-
grpc_core::HttpAnnotation(grpc_core::HttpAnnotation::Type::kStart,
|
1423
|
-
gpr_now(GPR_CLOCK_REALTIME))
|
1424
|
-
.Add(s->t->flow_control.stats())
|
1425
|
-
.Add(s->flow_control.stats()));
|
1426
|
-
}
|
1427
|
-
}
|
1428
|
-
if (t->is_client && t->channelz_socket != nullptr) {
|
1429
|
-
t->channelz_socket->RecordStreamStartedFromLocal();
|
1430
|
-
}
|
1431
|
-
CHECK_EQ(s->send_initial_metadata_finished, nullptr);
|
1432
|
-
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1433
|
-
|
1434
|
-
s->send_initial_metadata_finished = add_closure_barrier(on_complete);
|
1435
|
-
s->send_initial_metadata =
|
1436
|
-
op_payload->send_initial_metadata.send_initial_metadata;
|
1437
|
-
if (t->is_client) {
|
1438
|
-
s->deadline = std::min(
|
1439
|
-
s->deadline,
|
1440
|
-
s->send_initial_metadata->get(grpc_core::GrpcTimeoutMetadata())
|
1441
|
-
.value_or(grpc_core::Timestamp::InfFuture()));
|
1442
|
-
}
|
1443
|
-
if (contains_non_ok_status(s->send_initial_metadata)) {
|
1444
|
-
s->seen_error = true;
|
1445
|
-
}
|
1446
|
-
if (!s->write_closed) {
|
1447
|
-
if (t->is_client) {
|
1448
|
-
if (t->closed_with_error.ok()) {
|
1449
|
-
CHECK_EQ(s->id, 0u);
|
1450
|
-
grpc_chttp2_list_add_waiting_for_concurrency(t, s);
|
1451
|
-
maybe_start_some_streams(t);
|
1452
|
-
} else {
|
1453
|
-
s->trailing_metadata_buffer.Set(
|
1454
|
-
grpc_core::GrpcStreamNetworkState(),
|
1455
|
-
grpc_core::GrpcStreamNetworkState::kNotSentOnWire);
|
1456
|
-
grpc_chttp2_cancel_stream(
|
1457
|
-
t, s,
|
1458
|
-
grpc_error_set_int(
|
1459
|
-
GRPC_ERROR_CREATE_REFERENCING("Transport closed",
|
1460
|
-
&t->closed_with_error, 1),
|
1461
|
-
grpc_core::StatusIntProperty::kRpcStatus,
|
1462
|
-
GRPC_STATUS_UNAVAILABLE),
|
1463
|
-
false);
|
1464
|
-
}
|
1465
|
-
} else {
|
1466
|
-
CHECK_NE(s->id, 0u);
|
1467
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1468
|
-
if (!(op->send_message &&
|
1469
|
-
(op->payload->send_message.flags & GRPC_WRITE_BUFFER_HINT))) {
|
1470
|
-
grpc_chttp2_initiate_write(
|
1471
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_INITIAL_METADATA);
|
1472
|
-
}
|
1473
|
-
}
|
1474
|
-
} else {
|
1475
|
-
s->send_initial_metadata = nullptr;
|
1476
|
-
grpc_chttp2_complete_closure_step(
|
1477
|
-
t, &s->send_initial_metadata_finished,
|
1478
|
-
GRPC_ERROR_CREATE_REFERENCING(
|
1479
|
-
"Attempt to send initial metadata after stream was closed",
|
1480
|
-
&s->write_closed_error, 1),
|
1481
|
-
"send_initial_metadata_finished");
|
1482
|
-
}
|
1642
|
+
send_initial_metadata_locked(op, s, op_payload, t, on_complete);
|
1483
1643
|
}
|
1484
1644
|
|
1485
1645
|
if (op->send_message) {
|
1486
|
-
t
|
1487
|
-
grpc_core::global_stats().IncrementHttp2SendMessageSize(
|
1488
|
-
op->payload->send_message.send_message->Length());
|
1489
|
-
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1490
|
-
s->send_message_finished = add_closure_barrier(op->on_complete);
|
1491
|
-
const uint32_t flags = op_payload->send_message.flags;
|
1492
|
-
if (s->write_closed) {
|
1493
|
-
op->payload->send_message.stream_write_closed = true;
|
1494
|
-
// We should NOT return an error here, so as to avoid a cancel OP being
|
1495
|
-
// started. The surface layer will notice that the stream has been closed
|
1496
|
-
// for writes and fail the send message op.
|
1497
|
-
grpc_chttp2_complete_closure_step(t, &s->send_message_finished,
|
1498
|
-
absl::OkStatus(),
|
1499
|
-
"fetching_send_message_finished");
|
1500
|
-
} else {
|
1501
|
-
uint8_t* frame_hdr = grpc_slice_buffer_tiny_add(
|
1502
|
-
&s->flow_controlled_buffer, GRPC_HEADER_SIZE_IN_BYTES);
|
1503
|
-
frame_hdr[0] = (flags & GRPC_WRITE_INTERNAL_COMPRESS) != 0;
|
1504
|
-
size_t len = op_payload->send_message.send_message->Length();
|
1505
|
-
frame_hdr[1] = static_cast<uint8_t>(len >> 24);
|
1506
|
-
frame_hdr[2] = static_cast<uint8_t>(len >> 16);
|
1507
|
-
frame_hdr[3] = static_cast<uint8_t>(len >> 8);
|
1508
|
-
frame_hdr[4] = static_cast<uint8_t>(len);
|
1509
|
-
|
1510
|
-
s->call_tracer_wrapper.RecordOutgoingBytes(
|
1511
|
-
{GRPC_HEADER_SIZE_IN_BYTES, len, 0});
|
1512
|
-
s->next_message_end_offset =
|
1513
|
-
s->flow_controlled_bytes_written +
|
1514
|
-
static_cast<int64_t>(s->flow_controlled_buffer.length) +
|
1515
|
-
static_cast<int64_t>(len);
|
1516
|
-
if (flags & GRPC_WRITE_BUFFER_HINT) {
|
1517
|
-
s->next_message_end_offset -= t->write_buffer_size;
|
1518
|
-
s->write_buffering = true;
|
1519
|
-
} else {
|
1520
|
-
s->write_buffering = false;
|
1521
|
-
}
|
1522
|
-
|
1523
|
-
grpc_slice* const slices =
|
1524
|
-
op_payload->send_message.send_message->c_slice_buffer()->slices;
|
1525
|
-
grpc_slice* const end =
|
1526
|
-
slices + op_payload->send_message.send_message->Count();
|
1527
|
-
for (grpc_slice* slice = slices; slice != end; slice++) {
|
1528
|
-
grpc_slice_buffer_add(&s->flow_controlled_buffer,
|
1529
|
-
grpc_core::CSliceRef(*slice));
|
1530
|
-
}
|
1531
|
-
|
1532
|
-
int64_t notify_offset = s->next_message_end_offset;
|
1533
|
-
if (notify_offset <= s->flow_controlled_bytes_written) {
|
1534
|
-
grpc_chttp2_complete_closure_step(t, &s->send_message_finished,
|
1535
|
-
absl::OkStatus(),
|
1536
|
-
"fetching_send_message_finished");
|
1537
|
-
} else {
|
1538
|
-
grpc_chttp2_write_cb* cb = t->write_cb_pool;
|
1539
|
-
if (cb == nullptr) {
|
1540
|
-
cb = static_cast<grpc_chttp2_write_cb*>(gpr_malloc(sizeof(*cb)));
|
1541
|
-
} else {
|
1542
|
-
t->write_cb_pool = cb->next;
|
1543
|
-
}
|
1544
|
-
cb->call_at_byte = notify_offset;
|
1545
|
-
cb->closure = s->send_message_finished;
|
1546
|
-
s->send_message_finished = nullptr;
|
1547
|
-
grpc_chttp2_write_cb** list = flags & GRPC_WRITE_THROUGH
|
1548
|
-
? &s->on_write_finished_cbs
|
1549
|
-
: &s->on_flow_controlled_cbs;
|
1550
|
-
cb->next = *list;
|
1551
|
-
*list = cb;
|
1552
|
-
}
|
1553
|
-
|
1554
|
-
if (s->id != 0 &&
|
1555
|
-
(!s->write_buffering ||
|
1556
|
-
s->flow_controlled_buffer.length > t->write_buffer_size)) {
|
1557
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1558
|
-
grpc_chttp2_initiate_write(t, GRPC_CHTTP2_INITIATE_WRITE_SEND_MESSAGE);
|
1559
|
-
}
|
1560
|
-
}
|
1646
|
+
send_message_locked(op, s, op_payload, t, on_complete);
|
1561
1647
|
}
|
1562
1648
|
|
1563
1649
|
if (op->send_trailing_metadata) {
|
1564
|
-
|
1565
|
-
on_complete->next_data.scratch |= t->closure_barrier_may_cover_write;
|
1566
|
-
s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
|
1567
|
-
s->send_trailing_metadata =
|
1568
|
-
op_payload->send_trailing_metadata.send_trailing_metadata;
|
1569
|
-
s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
|
1570
|
-
s->write_buffering = false;
|
1571
|
-
if (contains_non_ok_status(s->send_trailing_metadata)) {
|
1572
|
-
s->seen_error = true;
|
1573
|
-
}
|
1574
|
-
if (s->write_closed) {
|
1575
|
-
s->send_trailing_metadata = nullptr;
|
1576
|
-
s->sent_trailing_metadata_op = nullptr;
|
1577
|
-
grpc_chttp2_complete_closure_step(
|
1578
|
-
t, &s->send_trailing_metadata_finished,
|
1579
|
-
op->payload->send_trailing_metadata.send_trailing_metadata->empty()
|
1580
|
-
? absl::OkStatus()
|
1581
|
-
: GRPC_ERROR_CREATE("Attempt to send trailing metadata after "
|
1582
|
-
"stream was closed"),
|
1583
|
-
"send_trailing_metadata_finished");
|
1584
|
-
} else if (s->id != 0) {
|
1585
|
-
// TODO(ctiller): check if there's flow control for any outstanding
|
1586
|
-
// bytes before going writable
|
1587
|
-
grpc_chttp2_mark_stream_writable(t, s);
|
1588
|
-
grpc_chttp2_initiate_write(
|
1589
|
-
t, GRPC_CHTTP2_INITIATE_WRITE_SEND_TRAILING_METADATA);
|
1590
|
-
}
|
1650
|
+
send_trailing_metadata_locked(op, s, op_payload, t, on_complete);
|
1591
1651
|
}
|
1592
1652
|
|
1593
1653
|
if (op->recv_initial_metadata) {
|
1594
|
-
|
1595
|
-
s->recv_initial_metadata_ready =
|
1596
|
-
op_payload->recv_initial_metadata.recv_initial_metadata_ready;
|
1597
|
-
s->recv_initial_metadata =
|
1598
|
-
op_payload->recv_initial_metadata.recv_initial_metadata;
|
1599
|
-
s->trailing_metadata_available =
|
1600
|
-
op_payload->recv_initial_metadata.trailing_metadata_available;
|
1601
|
-
if (s->parsed_trailers_only && s->trailing_metadata_available != nullptr) {
|
1602
|
-
*s->trailing_metadata_available = true;
|
1603
|
-
}
|
1604
|
-
grpc_chttp2_maybe_complete_recv_initial_metadata(t, s);
|
1654
|
+
recv_initial_metadata_locked(s, op_payload, t);
|
1605
1655
|
}
|
1606
1656
|
|
1607
1657
|
if (op->recv_message) {
|
1608
|
-
|
1609
|
-
s->recv_message_ready = op_payload->recv_message.recv_message_ready;
|
1610
|
-
s->recv_message = op_payload->recv_message.recv_message;
|
1611
|
-
s->recv_message->emplace();
|
1612
|
-
s->recv_message_flags = op_payload->recv_message.flags;
|
1613
|
-
s->call_failed_before_recv_message =
|
1614
|
-
op_payload->recv_message.call_failed_before_recv_message;
|
1615
|
-
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
1658
|
+
recv_message_locked(s, op_payload, t);
|
1616
1659
|
}
|
1617
1660
|
|
1618
1661
|
if (op->recv_trailing_metadata) {
|
1619
|
-
|
1620
|
-
s->collecting_stats = op_payload->recv_trailing_metadata.collect_stats;
|
1621
|
-
CHECK_EQ(s->recv_trailing_metadata_finished, nullptr);
|
1622
|
-
s->recv_trailing_metadata_finished =
|
1623
|
-
op_payload->recv_trailing_metadata.recv_trailing_metadata_ready;
|
1624
|
-
s->recv_trailing_metadata =
|
1625
|
-
op_payload->recv_trailing_metadata.recv_trailing_metadata;
|
1626
|
-
s->final_metadata_requested = true;
|
1627
|
-
grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
|
1662
|
+
recv_trailing_metadata_locked(s, op_payload, t);
|
1628
1663
|
}
|
1629
1664
|
|
1630
1665
|
if (on_complete != nullptr) {
|
@@ -1652,10 +1687,9 @@ void grpc_chttp2_transport::PerformStreamOp(
|
|
1652
1687
|
}
|
1653
1688
|
}
|
1654
1689
|
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
}
|
1690
|
+
GRPC_TRACE_LOG(http, INFO)
|
1691
|
+
<< "perform_stream_op[s=" << s << "; op=" << op
|
1692
|
+
<< "]: " << grpc_transport_stream_op_batch_string(op, false);
|
1659
1693
|
|
1660
1694
|
GRPC_CHTTP2_STREAM_REF(s, "perform_stream_op");
|
1661
1695
|
op->handler_private.extra_arg = gs;
|
@@ -1999,10 +2033,8 @@ static void perform_transport_op_locked(void* stream_op,
|
|
1999
2033
|
}
|
2000
2034
|
|
2001
2035
|
void grpc_chttp2_transport::PerformOp(grpc_transport_op* op) {
|
2002
|
-
|
2003
|
-
|
2004
|
-
<< "]: " << grpc_transport_op_string(op);
|
2005
|
-
}
|
2036
|
+
GRPC_TRACE_LOG(http, INFO) << "perform_transport_op[t=" << this
|
2037
|
+
<< "]: " << grpc_transport_op_string(op);
|
2006
2038
|
op->handler_private.extra_arg = this;
|
2007
2039
|
Ref().release()->combiner->Run(
|
2008
2040
|
GRPC_CLOSURE_INIT(&op->handler_private.closure,
|
@@ -2052,11 +2084,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2052
2084
|
// Lambda is immediately invoked as a big scoped section that can be
|
2053
2085
|
// exited out of at any point by returning.
|
2054
2086
|
[&]() {
|
2055
|
-
|
2056
|
-
|
2057
|
-
|
2058
|
-
|
2059
|
-
}
|
2087
|
+
GRPC_TRACE_VLOG(http, 2)
|
2088
|
+
<< "maybe_complete_recv_message " << s
|
2089
|
+
<< " final_metadata_requested=" << s->final_metadata_requested
|
2090
|
+
<< " seen_error=" << s->seen_error;
|
2060
2091
|
if (s->final_metadata_requested && s->seen_error) {
|
2061
2092
|
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
2062
2093
|
s->recv_message->reset();
|
@@ -2067,11 +2098,10 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2067
2098
|
int64_t min_progress_size;
|
2068
2099
|
auto r = grpc_deframe_unprocessed_incoming_frames(
|
2069
2100
|
s, &min_progress_size, &**s->recv_message, s->recv_message_flags);
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
}
|
2101
|
+
GRPC_TRACE_VLOG(http, 2)
|
2102
|
+
<< "Deframe data frame: "
|
2103
|
+
<< grpc_core::PollToString(
|
2104
|
+
r, [](absl::Status r) { return r.ToString(); });
|
2075
2105
|
if (r.pending()) {
|
2076
2106
|
if (s->read_closed) {
|
2077
2107
|
grpc_slice_buffer_reset_and_unref(&s->frame_storage);
|
@@ -2122,13 +2152,12 @@ void grpc_chttp2_maybe_complete_recv_message(grpc_chttp2_transport* t,
|
|
2122
2152
|
void grpc_chttp2_maybe_complete_recv_trailing_metadata(grpc_chttp2_transport* t,
|
2123
2153
|
grpc_chttp2_stream* s) {
|
2124
2154
|
grpc_chttp2_maybe_complete_recv_message(t, s);
|
2125
|
-
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2130
|
-
|
2131
|
-
}
|
2155
|
+
GRPC_TRACE_VLOG(http, 2) << "maybe_complete_recv_trailing_metadata cli="
|
2156
|
+
<< t->is_client << " s=" << s
|
2157
|
+
<< " closure=" << s->recv_trailing_metadata_finished
|
2158
|
+
<< " read_closed=" << s->read_closed
|
2159
|
+
<< " write_closed=" << s->write_closed << " "
|
2160
|
+
<< s->frame_storage.length;
|
2132
2161
|
if (s->recv_trailing_metadata_finished != nullptr && s->read_closed &&
|
2133
2162
|
s->write_closed) {
|
2134
2163
|
if (s->seen_error || !t->is_client) {
|
@@ -2332,15 +2361,12 @@ grpc_chttp2_transport::RemovedStreamHandle grpc_chttp2_mark_stream_closed(
|
|
2332
2361
|
grpc_chttp2_transport* t, grpc_chttp2_stream* s, int close_reads,
|
2333
2362
|
int close_writes, grpc_error_handle error) {
|
2334
2363
|
grpc_chttp2_transport::RemovedStreamHandle rsh;
|
2335
|
-
|
2336
|
-
|
2337
|
-
|
2338
|
-
|
2339
|
-
|
2340
|
-
|
2341
|
-
: (close_writes ? "write" : "nothing??")))
|
2342
|
-
<< " [" << grpc_core::StatusToString(error) << "]";
|
2343
|
-
}
|
2364
|
+
GRPC_TRACE_VLOG(http, 2)
|
2365
|
+
<< "MARK_STREAM_CLOSED: t=" << t << " s=" << s << "(id=" << s->id << ") "
|
2366
|
+
<< ((close_reads && close_writes)
|
2367
|
+
? "read+write"
|
2368
|
+
: (close_reads ? "read" : (close_writes ? "write" : "nothing??")))
|
2369
|
+
<< " [" << grpc_core::StatusToString(error) << "]";
|
2344
2370
|
if (s->read_closed && s->write_closed) {
|
2345
2371
|
// already closed, but we should still fake the status if needed.
|
2346
2372
|
grpc_error_handle overall_error = removal_error(error, s, "Stream removed");
|
@@ -2676,6 +2702,7 @@ static void read_action(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
|
2676
2702
|
static void read_action_parse_loop_locked(
|
2677
2703
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
2678
2704
|
grpc_error_handle error) {
|
2705
|
+
GRPC_LATENT_SEE_INNER_SCOPE("read_action_parse_loop_locked");
|
2679
2706
|
if (t->closed_with_error.ok()) {
|
2680
2707
|
grpc_error_handle errors[3] = {error, absl::OkStatus(), absl::OkStatus()};
|
2681
2708
|
size_t requests_started = 0;
|
@@ -2816,10 +2843,9 @@ static void start_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
|
2816
2843
|
static void start_bdp_ping_locked(
|
2817
2844
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
2818
2845
|
grpc_error_handle error) {
|
2819
|
-
|
2820
|
-
|
2821
|
-
|
2822
|
-
}
|
2846
|
+
GRPC_TRACE_LOG(http, INFO)
|
2847
|
+
<< t->peer_string.as_string_view()
|
2848
|
+
<< ": Start BDP ping err=" << grpc_core::StatusToString(error);
|
2823
2849
|
if (!error.ok() || !t->closed_with_error.ok()) {
|
2824
2850
|
return;
|
2825
2851
|
}
|
@@ -2842,10 +2868,9 @@ static void finish_bdp_ping(grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
|
2842
2868
|
static void finish_bdp_ping_locked(
|
2843
2869
|
grpc_core::RefCountedPtr<grpc_chttp2_transport> t,
|
2844
2870
|
grpc_error_handle error) {
|
2845
|
-
|
2846
|
-
|
2847
|
-
|
2848
|
-
}
|
2871
|
+
GRPC_TRACE_LOG(http, INFO)
|
2872
|
+
<< t->peer_string.as_string_view()
|
2873
|
+
<< ": Complete BDP ping err=" << grpc_core::StatusToString(error);
|
2849
2874
|
if (!error.ok() || !t->closed_with_error.ok()) {
|
2850
2875
|
return;
|
2851
2876
|
}
|
@@ -3107,10 +3132,9 @@ static void benign_reclaimer_locked(
|
|
3107
3132
|
if (error.ok() && t->stream_map.empty()) {
|
3108
3133
|
// Channel with no active streams: send a goaway to try and make it
|
3109
3134
|
// disconnect cleanly
|
3110
|
-
|
3111
|
-
|
3112
|
-
|
3113
|
-
}
|
3135
|
+
GRPC_TRACE_LOG(resource_quota, INFO)
|
3136
|
+
<< "HTTP2: " << t->peer_string.as_string_view()
|
3137
|
+
<< " - send goaway to free memory";
|
3114
3138
|
send_goaway(t.get(),
|
3115
3139
|
grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
|
3116
3140
|
grpc_core::StatusIntProperty::kHttp2Error,
|
@@ -3134,10 +3158,9 @@ static void destructive_reclaimer_locked(
|
|
3134
3158
|
if (error.ok() && !t->stream_map.empty()) {
|
3135
3159
|
// As stream_map is a hash map, this selects effectively a random stream.
|
3136
3160
|
grpc_chttp2_stream* s = t->stream_map.begin()->second;
|
3137
|
-
|
3138
|
-
|
3139
|
-
|
3140
|
-
}
|
3161
|
+
GRPC_TRACE_LOG(resource_quota, INFO)
|
3162
|
+
<< "HTTP2: " << t->peer_string.as_string_view()
|
3163
|
+
<< " - abandon stream id " << s->id;
|
3141
3164
|
grpc_chttp2_cancel_stream(
|
3142
3165
|
t.get(), s,
|
3143
3166
|
grpc_error_set_int(GRPC_ERROR_CREATE("Buffers full"),
|