grpc 1.55.0 → 1.56.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +102 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/grpc_security.h +19 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +53 -21
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +42 -40
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +176 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +325 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +567 -543
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +150 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +46 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -5
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/backoff/random_early_detection.h +5 -0
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +33 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +10 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +182 -119
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +5 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -1
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -1
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/validate_metadata.cc +37 -22
- data/src/core/lib/surface/validate_metadata.h +13 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +5 -2
- data/src/core/tsi/ssl_transport_security.h +13 -1
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -12
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -22,12 +22,14 @@
|
|
22
22
|
|
23
23
|
#include <algorithm>
|
24
24
|
#include <atomic>
|
25
|
+
#include <cstdint>
|
25
26
|
|
26
27
|
#include "absl/status/statusor.h"
|
27
28
|
#include "absl/strings/escaping.h"
|
29
|
+
#include "absl/strings/str_cat.h"
|
28
30
|
#include "absl/strings/strip.h"
|
29
31
|
|
30
|
-
#include <grpc/support/
|
32
|
+
#include <grpc/support/json.h>
|
31
33
|
#include <grpc/support/log.h>
|
32
34
|
#include <grpc/support/time.h>
|
33
35
|
|
@@ -37,7 +39,6 @@
|
|
37
39
|
#include "src/core/lib/channel/channelz_registry.h"
|
38
40
|
#include "src/core/lib/gpr/string.h"
|
39
41
|
#include "src/core/lib/gpr/useful.h"
|
40
|
-
#include "src/core/lib/iomgr/exec_ctx.h"
|
41
42
|
#include "src/core/lib/iomgr/resolved_address.h"
|
42
43
|
#include "src/core/lib/json/json_writer.h"
|
43
44
|
#include "src/core/lib/transport/connectivity_state.h"
|
@@ -67,66 +68,87 @@ std::string BaseNode::RenderJsonString() {
|
|
67
68
|
// CallCountingHelper
|
68
69
|
//
|
69
70
|
|
70
|
-
CallCountingHelper::
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
void CallCountingHelper::RecordCallStarted() {
|
72
|
+
calls_started_.fetch_add(1, std::memory_order_relaxed);
|
73
|
+
last_call_started_cycle_.store(gpr_get_cycle_counter(),
|
74
|
+
std::memory_order_relaxed);
|
75
|
+
}
|
76
|
+
|
77
|
+
void CallCountingHelper::RecordCallFailed() {
|
78
|
+
calls_failed_.fetch_add(1, std::memory_order_relaxed);
|
79
|
+
}
|
80
|
+
|
81
|
+
void CallCountingHelper::RecordCallSucceeded() {
|
82
|
+
calls_succeeded_.fetch_add(1, std::memory_order_relaxed);
|
83
|
+
}
|
84
|
+
|
85
|
+
void CallCountingHelper::PopulateCallCounts(Json::Object* json) {
|
86
|
+
auto calls_started = calls_started_.load(std::memory_order_relaxed);
|
87
|
+
auto calls_succeeded = calls_succeeded_.load(std::memory_order_relaxed);
|
88
|
+
auto calls_failed = calls_failed_.load(std::memory_order_relaxed);
|
89
|
+
auto last_call_started_cycle =
|
90
|
+
last_call_started_cycle_.load(std::memory_order_relaxed);
|
91
|
+
if (calls_started != 0) {
|
92
|
+
(*json)["callsStarted"] = Json::FromString(absl::StrCat(calls_started));
|
93
|
+
gpr_timespec ts = gpr_convert_clock_type(
|
94
|
+
gpr_cycle_counter_to_time(last_call_started_cycle), GPR_CLOCK_REALTIME);
|
95
|
+
(*json)["lastCallStartedTimestamp"] =
|
96
|
+
Json::FromString(gpr_format_timespec(ts));
|
97
|
+
}
|
98
|
+
if (calls_succeeded != 0) {
|
99
|
+
(*json)["callsSucceeded"] = Json::FromString(absl::StrCat(calls_succeeded));
|
100
|
+
}
|
101
|
+
if (calls_failed != 0) {
|
102
|
+
(*json)["callsFailed"] = Json::FromString(absl::StrCat(calls_failed));
|
75
103
|
}
|
76
104
|
}
|
77
105
|
|
78
|
-
|
79
|
-
|
80
|
-
|
106
|
+
//
|
107
|
+
// PerCpuCallCountingHelper
|
108
|
+
//
|
109
|
+
|
110
|
+
void PerCpuCallCountingHelper::RecordCallStarted() {
|
111
|
+
auto& data = per_cpu_data_.this_cpu();
|
81
112
|
data.calls_started.fetch_add(1, std::memory_order_relaxed);
|
82
113
|
data.last_call_started_cycle.store(gpr_get_cycle_counter(),
|
83
114
|
std::memory_order_relaxed);
|
84
115
|
}
|
85
116
|
|
86
|
-
void
|
87
|
-
|
88
|
-
.calls_failed.fetch_add(1, std::memory_order_relaxed);
|
117
|
+
void PerCpuCallCountingHelper::RecordCallFailed() {
|
118
|
+
per_cpu_data_.this_cpu().calls_failed.fetch_add(1, std::memory_order_relaxed);
|
89
119
|
}
|
90
120
|
|
91
|
-
void
|
92
|
-
|
93
|
-
|
94
|
-
}
|
95
|
-
|
96
|
-
void CallCountingHelper::CollectData(CounterData* out) {
|
97
|
-
for (size_t core = 0; core < num_cores_; ++core) {
|
98
|
-
AtomicCounterData& data = per_cpu_counter_data_storage_[core];
|
99
|
-
|
100
|
-
out->calls_started += data.calls_started.load(std::memory_order_relaxed);
|
101
|
-
out->calls_succeeded +=
|
102
|
-
per_cpu_counter_data_storage_[core].calls_succeeded.load(
|
103
|
-
std::memory_order_relaxed);
|
104
|
-
out->calls_failed += per_cpu_counter_data_storage_[core].calls_failed.load(
|
105
|
-
std::memory_order_relaxed);
|
106
|
-
const gpr_cycle_counter last_call =
|
107
|
-
per_cpu_counter_data_storage_[core].last_call_started_cycle.load(
|
108
|
-
std::memory_order_relaxed);
|
109
|
-
if (last_call > out->last_call_started_cycle) {
|
110
|
-
out->last_call_started_cycle = last_call;
|
111
|
-
}
|
112
|
-
}
|
121
|
+
void PerCpuCallCountingHelper::RecordCallSucceeded() {
|
122
|
+
per_cpu_data_.this_cpu().calls_succeeded.fetch_add(1,
|
123
|
+
std::memory_order_relaxed);
|
113
124
|
}
|
114
125
|
|
115
|
-
void
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
126
|
+
void PerCpuCallCountingHelper::PopulateCallCounts(Json::Object* json) {
|
127
|
+
int64_t calls_started = 0;
|
128
|
+
int64_t calls_succeeded = 0;
|
129
|
+
int64_t calls_failed = 0;
|
130
|
+
gpr_cycle_counter last_call_started_cycle = 0;
|
131
|
+
for (const auto& cpu : per_cpu_data_) {
|
132
|
+
calls_started += cpu.calls_started.load(std::memory_order_relaxed);
|
133
|
+
calls_succeeded += cpu.calls_succeeded.load(std::memory_order_relaxed);
|
134
|
+
calls_failed += cpu.calls_failed.load(std::memory_order_relaxed);
|
135
|
+
last_call_started_cycle =
|
136
|
+
std::max(last_call_started_cycle,
|
137
|
+
cpu.last_call_started_cycle.load(std::memory_order_relaxed));
|
138
|
+
}
|
139
|
+
|
140
|
+
if (calls_started != 0) {
|
141
|
+
(*json)["callsStarted"] = Json::FromString(absl::StrCat(calls_started));
|
120
142
|
gpr_timespec ts = gpr_convert_clock_type(
|
121
|
-
gpr_cycle_counter_to_time(
|
122
|
-
|
123
|
-
|
143
|
+
gpr_cycle_counter_to_time(last_call_started_cycle), GPR_CLOCK_REALTIME);
|
144
|
+
(*json)["lastCallStartedTimestamp"] =
|
145
|
+
Json::FromString(gpr_format_timespec(ts));
|
124
146
|
}
|
125
|
-
if (
|
126
|
-
(*json)["callsSucceeded"] =
|
147
|
+
if (calls_succeeded != 0) {
|
148
|
+
(*json)["callsSucceeded"] = Json::FromString(absl::StrCat(calls_succeeded));
|
127
149
|
}
|
128
|
-
if (
|
129
|
-
(*json)["callsFailed"] =
|
150
|
+
if (calls_failed != 0) {
|
151
|
+
(*json)["callsFailed"] = Json::FromString(absl::StrCat(calls_failed));
|
130
152
|
}
|
131
153
|
}
|
132
154
|
|
@@ -161,7 +183,7 @@ const char* ChannelNode::GetChannelConnectivityStateChangeString(
|
|
161
183
|
|
162
184
|
Json ChannelNode::RenderJson() {
|
163
185
|
Json::Object data = {
|
164
|
-
{"target", target_},
|
186
|
+
{"target", Json::FromString(target_)},
|
165
187
|
};
|
166
188
|
// Connectivity state.
|
167
189
|
// If low-order bit is on, then the field is set.
|
@@ -169,9 +191,9 @@ Json ChannelNode::RenderJson() {
|
|
169
191
|
if ((state_field & 1) != 0) {
|
170
192
|
grpc_connectivity_state state =
|
171
193
|
static_cast<grpc_connectivity_state>(state_field >> 1);
|
172
|
-
data["state"] = Json::
|
173
|
-
{"state", ConnectivityStateName(state)},
|
174
|
-
};
|
194
|
+
data["state"] = Json::FromObject({
|
195
|
+
{"state", Json::FromString(ConnectivityStateName(state))},
|
196
|
+
});
|
175
197
|
}
|
176
198
|
// Fill in the channel trace if applicable.
|
177
199
|
Json trace_json = trace_.RenderJson();
|
@@ -182,16 +204,15 @@ Json ChannelNode::RenderJson() {
|
|
182
204
|
call_counter_.PopulateCallCounts(&data);
|
183
205
|
// Construct outer object.
|
184
206
|
Json::Object json = {
|
185
|
-
{"ref",
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
{"data", std::move(data)},
|
207
|
+
{"ref", Json::FromObject({
|
208
|
+
{"channelId", Json::FromString(absl::StrCat(uuid()))},
|
209
|
+
})},
|
210
|
+
{"data", Json::FromObject(std::move(data))},
|
190
211
|
};
|
191
212
|
// Template method. Child classes may override this to add their specific
|
192
213
|
// functionality.
|
193
214
|
PopulateChildRefs(&json);
|
194
|
-
return json;
|
215
|
+
return Json::FromObject(std::move(json));
|
195
216
|
}
|
196
217
|
|
197
218
|
void ChannelNode::PopulateChildRefs(Json::Object* json) {
|
@@ -199,20 +220,20 @@ void ChannelNode::PopulateChildRefs(Json::Object* json) {
|
|
199
220
|
if (!child_subchannels_.empty()) {
|
200
221
|
Json::Array array;
|
201
222
|
for (intptr_t subchannel_uuid : child_subchannels_) {
|
202
|
-
array.emplace_back(Json::
|
203
|
-
{"subchannelId",
|
204
|
-
});
|
223
|
+
array.emplace_back(Json::FromObject({
|
224
|
+
{"subchannelId", Json::FromString(absl::StrCat(subchannel_uuid))},
|
225
|
+
}));
|
205
226
|
}
|
206
|
-
(*json)["subchannelRef"] = std::move(array);
|
227
|
+
(*json)["subchannelRef"] = Json::FromArray(std::move(array));
|
207
228
|
}
|
208
229
|
if (!child_channels_.empty()) {
|
209
230
|
Json::Array array;
|
210
231
|
for (intptr_t channel_uuid : child_channels_) {
|
211
|
-
array.emplace_back(Json::
|
212
|
-
{"channelId",
|
213
|
-
});
|
232
|
+
array.emplace_back(Json::FromObject({
|
233
|
+
{"channelId", Json::FromString(absl::StrCat(channel_uuid))},
|
234
|
+
}));
|
214
235
|
}
|
215
|
-
(*json)["channelRef"] = std::move(array);
|
236
|
+
(*json)["channelRef"] = Json::FromArray(std::move(array));
|
216
237
|
}
|
217
238
|
}
|
218
239
|
|
@@ -286,16 +307,17 @@ std::string ServerNode::RenderServerSockets(intptr_t start_socket_id,
|
|
286
307
|
auto it = child_sockets_.lower_bound(start_socket_id);
|
287
308
|
for (; it != child_sockets_.end() && sockets_rendered < pagination_limit;
|
288
309
|
++it, ++sockets_rendered) {
|
289
|
-
array.emplace_back(Json::
|
290
|
-
{"socketId",
|
291
|
-
{"name", it->second->name()},
|
292
|
-
});
|
310
|
+
array.emplace_back(Json::FromObject({
|
311
|
+
{"socketId", Json::FromString(absl::StrCat(it->first))},
|
312
|
+
{"name", Json::FromString(it->second->name())},
|
313
|
+
}));
|
314
|
+
}
|
315
|
+
object["socketRef"] = Json::FromArray(std::move(array));
|
316
|
+
if (it == child_sockets_.end()) {
|
317
|
+
object["end"] = Json::FromBool(true);
|
293
318
|
}
|
294
|
-
object["socketRef"] = std::move(array);
|
295
|
-
if (it == child_sockets_.end()) object["end"] = true;
|
296
319
|
}
|
297
|
-
Json
|
298
|
-
return JsonDump(json);
|
320
|
+
return JsonDump(Json::FromObject(std::move(object)));
|
299
321
|
}
|
300
322
|
|
301
323
|
Json ServerNode::RenderJson() {
|
@@ -309,11 +331,10 @@ Json ServerNode::RenderJson() {
|
|
309
331
|
call_counter_.PopulateCallCounts(&data);
|
310
332
|
// Construct top-level object.
|
311
333
|
Json::Object object = {
|
312
|
-
{"ref",
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
{"data", std::move(data)},
|
334
|
+
{"ref", Json::FromObject({
|
335
|
+
{"serverId", Json::FromString(absl::StrCat(uuid()))},
|
336
|
+
})},
|
337
|
+
{"data", Json::FromObject(std::move(data))},
|
317
338
|
};
|
318
339
|
// Render listen sockets.
|
319
340
|
{
|
@@ -321,15 +342,15 @@ Json ServerNode::RenderJson() {
|
|
321
342
|
if (!child_listen_sockets_.empty()) {
|
322
343
|
Json::Array array;
|
323
344
|
for (const auto& it : child_listen_sockets_) {
|
324
|
-
array.emplace_back(Json::
|
325
|
-
{"socketId",
|
326
|
-
{"name", it.second->name()},
|
327
|
-
});
|
345
|
+
array.emplace_back(Json::FromObject({
|
346
|
+
{"socketId", Json::FromString(absl::StrCat(it.first))},
|
347
|
+
{"name", Json::FromString(it.second->name())},
|
348
|
+
}));
|
328
349
|
}
|
329
|
-
object["listenSocket"] = std::move(array);
|
350
|
+
object["listenSocket"] = Json::FromArray(std::move(array));
|
330
351
|
}
|
331
352
|
}
|
332
|
-
return object;
|
353
|
+
return Json::FromObject(std::move(object));
|
333
354
|
}
|
334
355
|
|
335
356
|
//
|
@@ -339,17 +360,19 @@ Json ServerNode::RenderJson() {
|
|
339
360
|
Json SocketNode::Security::Tls::RenderJson() {
|
340
361
|
Json::Object data;
|
341
362
|
if (type == NameType::kStandardName) {
|
342
|
-
data["standard_name"] = name;
|
363
|
+
data["standard_name"] = Json::FromString(name);
|
343
364
|
} else if (type == NameType::kOtherName) {
|
344
|
-
data["other_name"] = name;
|
365
|
+
data["other_name"] = Json::FromString(name);
|
345
366
|
}
|
346
367
|
if (!local_certificate.empty()) {
|
347
|
-
data["local_certificate"] =
|
368
|
+
data["local_certificate"] =
|
369
|
+
Json::FromString(absl::Base64Escape(local_certificate));
|
348
370
|
}
|
349
371
|
if (!remote_certificate.empty()) {
|
350
|
-
data["remote_certificate"] =
|
372
|
+
data["remote_certificate"] =
|
373
|
+
Json::FromString(absl::Base64Escape(remote_certificate));
|
351
374
|
}
|
352
|
-
return data;
|
375
|
+
return Json::FromObject(std::move(data));
|
353
376
|
}
|
354
377
|
|
355
378
|
//
|
@@ -367,12 +390,12 @@ Json SocketNode::Security::RenderJson() {
|
|
367
390
|
}
|
368
391
|
break;
|
369
392
|
case ModelType::kOther:
|
370
|
-
if (other) {
|
393
|
+
if (other.has_value()) {
|
371
394
|
data["other"] = *other;
|
372
395
|
}
|
373
396
|
break;
|
374
397
|
}
|
375
|
-
return data;
|
398
|
+
return Json::FromObject(std::move(data));
|
376
399
|
}
|
377
400
|
|
378
401
|
namespace {
|
@@ -424,32 +447,32 @@ void PopulateSocketAddressJson(Json::Object* json, const char* name,
|
|
424
447
|
auto address = StringToSockaddr(absl::StripPrefix(uri->path(), "/"));
|
425
448
|
if (address.ok()) {
|
426
449
|
std::string packed_host = grpc_sockaddr_get_packed_host(&*address);
|
427
|
-
(*json)[name] = Json::
|
450
|
+
(*json)[name] = Json::FromObject({
|
428
451
|
{"tcpip_address",
|
429
|
-
Json::
|
430
|
-
{"port",
|
431
|
-
|
432
|
-
|
433
|
-
|
452
|
+
Json::FromObject({
|
453
|
+
{"port", Json::FromString(
|
454
|
+
absl::StrCat(grpc_sockaddr_get_port(&*address)))},
|
455
|
+
{"ip_address",
|
456
|
+
Json::FromString(absl::Base64Escape(packed_host))},
|
457
|
+
})},
|
458
|
+
});
|
434
459
|
return;
|
435
460
|
}
|
436
461
|
} else if (uri->scheme() == "unix") {
|
437
|
-
(*json)[name] = Json::
|
438
|
-
{"uds_address",
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
};
|
462
|
+
(*json)[name] = Json::FromObject({
|
463
|
+
{"uds_address", Json::FromObject({
|
464
|
+
{"filename", Json::FromString(uri->path())},
|
465
|
+
})},
|
466
|
+
});
|
443
467
|
return;
|
444
468
|
}
|
445
469
|
}
|
446
470
|
// Unknown address type.
|
447
|
-
(*json)[name] = Json::
|
448
|
-
{"other_address",
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
};
|
471
|
+
(*json)[name] = Json::FromObject({
|
472
|
+
{"other_address", Json::FromObject({
|
473
|
+
{"name", Json::FromString(addr_str)},
|
474
|
+
})},
|
475
|
+
});
|
453
476
|
}
|
454
477
|
|
455
478
|
} // namespace
|
@@ -491,14 +514,15 @@ Json SocketNode::RenderJson() {
|
|
491
514
|
gpr_timespec ts;
|
492
515
|
int64_t streams_started = streams_started_.load(std::memory_order_relaxed);
|
493
516
|
if (streams_started != 0) {
|
494
|
-
data["streamsStarted"] =
|
517
|
+
data["streamsStarted"] = Json::FromString(absl::StrCat(streams_started));
|
495
518
|
gpr_cycle_counter last_local_stream_created_cycle =
|
496
519
|
last_local_stream_created_cycle_.load(std::memory_order_relaxed);
|
497
520
|
if (last_local_stream_created_cycle != 0) {
|
498
521
|
ts = gpr_convert_clock_type(
|
499
522
|
gpr_cycle_counter_to_time(last_local_stream_created_cycle),
|
500
523
|
GPR_CLOCK_REALTIME);
|
501
|
-
data["lastLocalStreamCreatedTimestamp"] =
|
524
|
+
data["lastLocalStreamCreatedTimestamp"] =
|
525
|
+
Json::FromString(gpr_format_timespec(ts));
|
502
526
|
}
|
503
527
|
gpr_cycle_counter last_remote_stream_created_cycle =
|
504
528
|
last_remote_stream_created_cycle_.load(std::memory_order_relaxed);
|
@@ -506,49 +530,53 @@ Json SocketNode::RenderJson() {
|
|
506
530
|
ts = gpr_convert_clock_type(
|
507
531
|
gpr_cycle_counter_to_time(last_remote_stream_created_cycle),
|
508
532
|
GPR_CLOCK_REALTIME);
|
509
|
-
data["lastRemoteStreamCreatedTimestamp"] =
|
533
|
+
data["lastRemoteStreamCreatedTimestamp"] =
|
534
|
+
Json::FromString(gpr_format_timespec(ts));
|
510
535
|
}
|
511
536
|
}
|
512
537
|
int64_t streams_succeeded =
|
513
538
|
streams_succeeded_.load(std::memory_order_relaxed);
|
514
539
|
if (streams_succeeded != 0) {
|
515
|
-
data["streamsSucceeded"] =
|
540
|
+
data["streamsSucceeded"] =
|
541
|
+
Json::FromString(absl::StrCat(streams_succeeded));
|
516
542
|
}
|
517
543
|
int64_t streams_failed = streams_failed_.load(std::memory_order_relaxed);
|
518
544
|
if (streams_failed != 0) {
|
519
|
-
data["streamsFailed"] =
|
545
|
+
data["streamsFailed"] = Json::FromString(absl::StrCat(streams_failed));
|
520
546
|
}
|
521
547
|
int64_t messages_sent = messages_sent_.load(std::memory_order_relaxed);
|
522
548
|
if (messages_sent != 0) {
|
523
|
-
data["messagesSent"] =
|
549
|
+
data["messagesSent"] = Json::FromString(absl::StrCat(messages_sent));
|
524
550
|
ts = gpr_convert_clock_type(
|
525
551
|
gpr_cycle_counter_to_time(
|
526
552
|
last_message_sent_cycle_.load(std::memory_order_relaxed)),
|
527
553
|
GPR_CLOCK_REALTIME);
|
528
|
-
data["lastMessageSentTimestamp"] =
|
554
|
+
data["lastMessageSentTimestamp"] =
|
555
|
+
Json::FromString(gpr_format_timespec(ts));
|
529
556
|
}
|
530
557
|
int64_t messages_received =
|
531
558
|
messages_received_.load(std::memory_order_relaxed);
|
532
559
|
if (messages_received != 0) {
|
533
|
-
data["messagesReceived"] =
|
560
|
+
data["messagesReceived"] =
|
561
|
+
Json::FromString(absl::StrCat(messages_received));
|
534
562
|
ts = gpr_convert_clock_type(
|
535
563
|
gpr_cycle_counter_to_time(
|
536
564
|
last_message_received_cycle_.load(std::memory_order_relaxed)),
|
537
565
|
GPR_CLOCK_REALTIME);
|
538
|
-
data["lastMessageReceivedTimestamp"] =
|
566
|
+
data["lastMessageReceivedTimestamp"] =
|
567
|
+
Json::FromString(gpr_format_timespec(ts));
|
539
568
|
}
|
540
569
|
int64_t keepalives_sent = keepalives_sent_.load(std::memory_order_relaxed);
|
541
570
|
if (keepalives_sent != 0) {
|
542
|
-
data["keepAlivesSent"] =
|
571
|
+
data["keepAlivesSent"] = Json::FromString(absl::StrCat(keepalives_sent));
|
543
572
|
}
|
544
573
|
// Create and fill the parent object.
|
545
574
|
Json::Object object = {
|
546
|
-
{"ref",
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
{"data", std::move(data)},
|
575
|
+
{"ref", Json::FromObject({
|
576
|
+
{"socketId", Json::FromString(absl::StrCat(uuid()))},
|
577
|
+
{"name", Json::FromString(name())},
|
578
|
+
})},
|
579
|
+
{"data", Json::FromObject(std::move(data))},
|
552
580
|
};
|
553
581
|
if (security_ != nullptr &&
|
554
582
|
security_->type != SocketNode::Security::ModelType::kUnset) {
|
@@ -556,7 +584,7 @@ Json SocketNode::RenderJson() {
|
|
556
584
|
}
|
557
585
|
PopulateSocketAddressJson(&object, "remote", remote_.c_str());
|
558
586
|
PopulateSocketAddressJson(&object, "local", local_.c_str());
|
559
|
-
return object;
|
587
|
+
return Json::FromObject(std::move(object));
|
560
588
|
}
|
561
589
|
|
562
590
|
//
|
@@ -569,14 +597,13 @@ ListenSocketNode::ListenSocketNode(std::string local_addr, std::string name)
|
|
569
597
|
|
570
598
|
Json ListenSocketNode::RenderJson() {
|
571
599
|
Json::Object object = {
|
572
|
-
{"ref",
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
}},
|
600
|
+
{"ref", Json::FromObject({
|
601
|
+
{"socketId", Json::FromString(absl::StrCat(uuid()))},
|
602
|
+
{"name", Json::FromString(name())},
|
603
|
+
})},
|
577
604
|
};
|
578
605
|
PopulateSocketAddressJson(&object, "local", local_addr_.c_str());
|
579
|
-
return object;
|
606
|
+
return Json::FromObject(std::move(object));
|
580
607
|
}
|
581
608
|
|
582
609
|
} // namespace channelz
|
@@ -29,7 +29,6 @@
|
|
29
29
|
#include <set>
|
30
30
|
#include <string>
|
31
31
|
#include <utility>
|
32
|
-
#include <vector>
|
33
32
|
|
34
33
|
#include "absl/strings/string_view.h"
|
35
34
|
#include "absl/types/optional.h"
|
@@ -41,6 +40,7 @@
|
|
41
40
|
#include "src/core/lib/channel/channel_trace.h"
|
42
41
|
#include "src/core/lib/gpr/time_precise.h"
|
43
42
|
#include "src/core/lib/gpr/useful.h"
|
43
|
+
#include "src/core/lib/gprpp/per_cpu.h"
|
44
44
|
#include "src/core/lib/gprpp/ref_counted.h"
|
45
45
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
46
46
|
#include "src/core/lib/gprpp/sync.h"
|
@@ -122,8 +122,6 @@ class BaseNode : public RefCounted<BaseNode> {
|
|
122
122
|
// - perform rendering of the above items
|
123
123
|
class CallCountingHelper {
|
124
124
|
public:
|
125
|
-
CallCountingHelper();
|
126
|
-
|
127
125
|
void RecordCallStarted();
|
128
126
|
void RecordCallFailed();
|
129
127
|
void RecordCallSucceeded();
|
@@ -135,44 +133,53 @@ class CallCountingHelper {
|
|
135
133
|
// testing peer friend.
|
136
134
|
friend class testing::CallCountingHelperPeer;
|
137
135
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
136
|
+
std::atomic<int64_t> calls_started_{0};
|
137
|
+
std::atomic<int64_t> calls_succeeded_{0};
|
138
|
+
std::atomic<int64_t> calls_failed_{0};
|
139
|
+
std::atomic<gpr_cycle_counter> last_call_started_cycle_{0};
|
140
|
+
};
|
141
|
+
|
142
|
+
class PerCpuCallCountingHelper {
|
143
|
+
public:
|
144
|
+
void RecordCallStarted();
|
145
|
+
void RecordCallFailed();
|
146
|
+
void RecordCallSucceeded();
|
147
|
+
|
148
|
+
// Common rendering of the call count data and last_call_started_timestamp.
|
149
|
+
void PopulateCallCounts(Json::Object* json);
|
150
|
+
|
151
|
+
private:
|
152
|
+
// testing peer friend.
|
153
|
+
friend class testing::CallCountingHelperPeer;
|
148
154
|
|
155
|
+
// We want to ensure that this per-cpu data structure lands on different
|
156
|
+
// cachelines per cpu.
|
157
|
+
// With C++17 we can do so explicitly with an `alignas` specifier.
|
158
|
+
// Prior versions we can at best approximate it by padding the structure.
|
159
|
+
// It'll probably work out ok, but it's not guaranteed across allocators.
|
160
|
+
// (in the bad case where this gets split across cachelines we'll just have
|
161
|
+
// two cpus fighting over the same cacheline with a slight performance
|
162
|
+
// degregation).
|
163
|
+
// TODO(ctiller): When we move to C++17 delete the duplicate definition.
|
164
|
+
#if __cplusplus >= 201703L
|
165
|
+
struct alignas(GPR_CACHELINE_SIZE) PerCpuData {
|
149
166
|
std::atomic<int64_t> calls_started{0};
|
150
167
|
std::atomic<int64_t> calls_succeeded{0};
|
151
168
|
std::atomic<int64_t> calls_failed{0};
|
152
169
|
std::atomic<gpr_cycle_counter> last_call_started_cycle{0};
|
153
|
-
// Make sure the size is exactly one cache line.
|
154
|
-
uint8_t padding[GPR_CACHELINE_SIZE - 3 * sizeof(std::atomic<intptr_t>) -
|
155
|
-
sizeof(std::atomic<gpr_cycle_counter>)];
|
156
170
|
};
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
struct CounterData {
|
165
|
-
int64_t calls_started = 0;
|
166
|
-
int64_t calls_succeeded = 0;
|
167
|
-
int64_t calls_failed = 0;
|
168
|
-
gpr_cycle_counter last_call_started_cycle = 0;
|
171
|
+
#else
|
172
|
+
struct PerCpuDataHeader {
|
173
|
+
std::atomic<int64_t> calls_started{0};
|
174
|
+
std::atomic<int64_t> calls_succeeded{0};
|
175
|
+
std::atomic<int64_t> calls_failed{0};
|
176
|
+
std::atomic<gpr_cycle_counter> last_call_started_cycle{0};
|
169
177
|
};
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
size_t num_cores_ = 0;
|
178
|
+
struct PerCpuData : public PerCpuDataHeader {
|
179
|
+
uint8_t padding[GPR_CACHELINE_SIZE - sizeof(PerCpuDataHeader)];
|
180
|
+
};
|
181
|
+
#endif
|
182
|
+
PerCpu<PerCpuData> per_cpu_data_{PerCpuOptions().SetCpusPerShard(4)};
|
176
183
|
};
|
177
184
|
|
178
185
|
// Handles channelz bookkeeping for channels
|
@@ -271,7 +278,7 @@ class ServerNode : public BaseNode {
|
|
271
278
|
void RecordCallSucceeded() { call_counter_.RecordCallSucceeded(); }
|
272
279
|
|
273
280
|
private:
|
274
|
-
|
281
|
+
PerCpuCallCountingHelper call_counter_;
|
275
282
|
ChannelTrace trace_;
|
276
283
|
Mutex child_mu_; // Guards child maps below.
|
277
284
|
std::map<intptr_t, RefCountedPtr<SocketNode>> child_sockets_;
|