grpc 1.55.0 → 1.56.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +100 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -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 +52 -20
- 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 +32 -39
- 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/internal.h +1 -15
- 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/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 +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -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 +148 -107
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- 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/security_connector/alts/alts_security_connector.cc +1 -5
- 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/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/ruby/ext/grpc/extconf.rb +8 -9
- 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 -14
- 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_;
|