grpc 1.55.3 → 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 -70
- 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 +82 -98
- data/src/core/ext/filters/client_channel/client_channel.h +4 -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/hpack_parser.cc +543 -567
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
- 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 +0 -5
- 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 +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
- 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 +156 -140
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- 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/validate_metadata.cc +22 -37
- data/src/core/lib/surface/validate_metadata.h +3 -13
- 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 -16
- 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/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -48,7 +48,8 @@ class XdsHttpStatefulSessionFilter : public XdsHttpFilterImpl {
|
|
48
48
|
ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const override;
|
49
49
|
absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
|
50
50
|
const FilterConfig& hcm_filter_config,
|
51
|
-
const FilterConfig* filter_config_override
|
51
|
+
const FilterConfig* filter_config_override,
|
52
|
+
absl::string_view filter_name) const override;
|
52
53
|
bool IsSupportedOnClients() const override { return true; }
|
53
54
|
bool IsSupportedOnServers() const override { return false; }
|
54
55
|
};
|
@@ -33,6 +33,8 @@
|
|
33
33
|
#include "envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h"
|
34
34
|
#include "google/protobuf/wrappers.upb.h"
|
35
35
|
|
36
|
+
#include <grpc/support/json.h>
|
37
|
+
|
36
38
|
#include "src/core/ext/xds/xds_common_types.h"
|
37
39
|
#include "src/core/lib/config/core_configuration.h"
|
38
40
|
#include "src/core/lib/gprpp/time.h"
|
@@ -51,7 +53,7 @@ class RoundRobinLbPolicyConfigFactory
|
|
51
53
|
const XdsResourceType::DecodeContext& /*context*/,
|
52
54
|
absl::string_view /*configuration*/, ValidationErrors* /*errors*/,
|
53
55
|
int /*recursion_depth*/) override {
|
54
|
-
return Json::Object{{"round_robin", Json::
|
56
|
+
return Json::Object{{"round_robin", Json::FromObject({})}};
|
55
57
|
}
|
56
58
|
|
57
59
|
absl::string_view type() override { return Type(); }
|
@@ -84,7 +86,7 @@ class ClientSideWeightedRoundRobinLbPolicyConfigFactory
|
|
84
86
|
resource);
|
85
87
|
if (enable_oob_load_report != nullptr &&
|
86
88
|
google_protobuf_BoolValue_value(enable_oob_load_report)) {
|
87
|
-
config["enableOobLoadReport"] = true;
|
89
|
+
config["enableOobLoadReport"] = Json::FromBool(true);
|
88
90
|
}
|
89
91
|
// oob_reporting_period
|
90
92
|
auto* duration_proto =
|
@@ -93,7 +95,7 @@ class ClientSideWeightedRoundRobinLbPolicyConfigFactory
|
|
93
95
|
if (duration_proto != nullptr) {
|
94
96
|
ValidationErrors::ScopedField field(errors, ".oob_reporting_period");
|
95
97
|
Duration duration = ParseDuration(duration_proto, errors);
|
96
|
-
config["oobReportingPeriod"] = duration.ToJsonString();
|
98
|
+
config["oobReportingPeriod"] = Json::FromString(duration.ToJsonString());
|
97
99
|
}
|
98
100
|
// blackout_period
|
99
101
|
duration_proto =
|
@@ -102,7 +104,7 @@ class ClientSideWeightedRoundRobinLbPolicyConfigFactory
|
|
102
104
|
if (duration_proto != nullptr) {
|
103
105
|
ValidationErrors::ScopedField field(errors, ".blackout_period");
|
104
106
|
Duration duration = ParseDuration(duration_proto, errors);
|
105
|
-
config["blackoutPeriod"] = duration.ToJsonString();
|
107
|
+
config["blackoutPeriod"] = Json::FromString(duration.ToJsonString());
|
106
108
|
}
|
107
109
|
// weight_update_period
|
108
110
|
duration_proto =
|
@@ -111,7 +113,7 @@ class ClientSideWeightedRoundRobinLbPolicyConfigFactory
|
|
111
113
|
if (duration_proto != nullptr) {
|
112
114
|
ValidationErrors::ScopedField field(errors, ".weight_update_period");
|
113
115
|
Duration duration = ParseDuration(duration_proto, errors);
|
114
|
-
config["weightUpdatePeriod"] = duration.ToJsonString();
|
116
|
+
config["weightUpdatePeriod"] = Json::FromString(duration.ToJsonString());
|
115
117
|
}
|
116
118
|
// weight_expiration_period
|
117
119
|
duration_proto =
|
@@ -120,7 +122,8 @@ class ClientSideWeightedRoundRobinLbPolicyConfigFactory
|
|
120
122
|
if (duration_proto != nullptr) {
|
121
123
|
ValidationErrors::ScopedField field(errors, ".weight_expiration_period");
|
122
124
|
Duration duration = ParseDuration(duration_proto, errors);
|
123
|
-
config["weightExpirationPeriod"] =
|
125
|
+
config["weightExpirationPeriod"] =
|
126
|
+
Json::FromString(duration.ToJsonString());
|
124
127
|
}
|
125
128
|
// error_utilization_penalty
|
126
129
|
auto* error_utilization_penalty =
|
@@ -133,9 +136,10 @@ class ClientSideWeightedRoundRobinLbPolicyConfigFactory
|
|
133
136
|
if (value < 0.0) {
|
134
137
|
errors->AddError("value must be non-negative");
|
135
138
|
}
|
136
|
-
config["errorUtilizationPenalty"] = value;
|
139
|
+
config["errorUtilizationPenalty"] = Json::FromNumber(value);
|
137
140
|
}
|
138
|
-
return Json::Object{
|
141
|
+
return Json::Object{
|
142
|
+
{"weighted_round_robin", Json::FromObject(std::move(config))}};
|
139
143
|
}
|
140
144
|
|
141
145
|
absl::string_view type() override { return Type(); }
|
@@ -197,10 +201,10 @@ class RingHashLbPolicyConfigFactory
|
|
197
201
|
}
|
198
202
|
return Json::Object{
|
199
203
|
{"ring_hash_experimental",
|
200
|
-
Json::
|
201
|
-
{"minRingSize", min_ring_size},
|
202
|
-
{"maxRingSize", max_ring_size},
|
203
|
-
}},
|
204
|
+
Json::FromObject({
|
205
|
+
{"minRingSize", Json::FromNumber(min_ring_size)},
|
206
|
+
{"maxRingSize", Json::FromNumber(max_ring_size)},
|
207
|
+
})},
|
204
208
|
};
|
205
209
|
}
|
206
210
|
|
@@ -238,7 +242,8 @@ class WrrLocalityLbPolicyConfigFactory
|
|
238
242
|
context, endpoint_picking_policy, errors, recursion_depth + 1);
|
239
243
|
return Json::Object{
|
240
244
|
{"xds_wrr_locality_experimental",
|
241
|
-
Json::
|
245
|
+
Json::FromObject(
|
246
|
+
{{"childPolicy", Json::FromArray(std::move(child_policy))}})}};
|
242
247
|
}
|
243
248
|
|
244
249
|
absl::string_view type() override { return Type(); }
|
@@ -306,8 +311,9 @@ Json::Array XdsLbPolicyRegistry::ConvertXdsLbPolicyConfig(
|
|
306
311
|
if (serialized_value != nullptr) {
|
307
312
|
auto config_factory_it = policy_config_factories_.find(extension->type);
|
308
313
|
if (config_factory_it != policy_config_factories_.end()) {
|
309
|
-
return Json::Array{
|
310
|
-
|
314
|
+
return Json::Array{Json::FromObject(
|
315
|
+
config_factory_it->second->ConvertXdsLbPolicyConfig(
|
316
|
+
this, context, *serialized_value, errors, recursion_depth))};
|
311
317
|
}
|
312
318
|
}
|
313
319
|
// Check for custom LB policy type.
|
@@ -316,7 +322,7 @@ Json::Array XdsLbPolicyRegistry::ConvertXdsLbPolicyConfig(
|
|
316
322
|
CoreConfiguration::Get().lb_policy_registry().LoadBalancingPolicyExists(
|
317
323
|
extension->type, nullptr)) {
|
318
324
|
return Json::Array{
|
319
|
-
Json::
|
325
|
+
Json::FromObject({{std::string(extension->type), std::move(*json)}})};
|
320
326
|
}
|
321
327
|
// Unsupported type. Continue to next entry.
|
322
328
|
}
|
@@ -37,6 +37,7 @@
|
|
37
37
|
#include "envoy/config/listener/v3/listener.upb.h"
|
38
38
|
#include "envoy/config/listener/v3/listener.upbdefs.h"
|
39
39
|
#include "envoy/config/listener/v3/listener_components.upb.h"
|
40
|
+
#include "envoy/config/rbac/v3/rbac.upb.h"
|
40
41
|
#include "envoy/config/route/v3/route.upb.h"
|
41
42
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
|
42
43
|
#include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h"
|
@@ -45,6 +45,7 @@
|
|
45
45
|
#include "envoy/config/route/v3/route.upbdefs.h"
|
46
46
|
#include "envoy/config/route/v3/route_components.upb.h"
|
47
47
|
#include "envoy/type/matcher/v3/regex.upb.h"
|
48
|
+
#include "envoy/type/matcher/v3/string.upb.h"
|
48
49
|
#include "envoy/type/v3/percent.upb.h"
|
49
50
|
#include "envoy/type/v3/range.upb.h"
|
50
51
|
#include "google/protobuf/any.upb.h"
|
@@ -79,10 +80,10 @@
|
|
79
80
|
|
80
81
|
namespace grpc_core {
|
81
82
|
|
82
|
-
// TODO(
|
83
|
+
// TODO(apolcyn): remove this flag by the 1.58 release
|
83
84
|
bool XdsRlsEnabled() {
|
84
85
|
auto value = GetEnv("GRPC_EXPERIMENTAL_XDS_RLS_LB");
|
85
|
-
if (!value.has_value()) return
|
86
|
+
if (!value.has_value()) return true;
|
86
87
|
bool parsed_value;
|
87
88
|
bool parse_succeeded = gpr_parse_bool_value(value->c_str(), &parsed_value);
|
88
89
|
return parse_succeeded && parsed_value;
|
@@ -486,6 +487,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match,
|
|
486
487
|
int64_t range_start = 0;
|
487
488
|
int64_t range_end = 0;
|
488
489
|
bool present_match = false;
|
490
|
+
bool case_sensitive = true;
|
489
491
|
if (envoy_config_route_v3_HeaderMatcher_has_exact_match(header)) {
|
490
492
|
type = HeaderMatcher::Type::kExact;
|
491
493
|
match_string = UpbStringToStdString(
|
@@ -514,11 +516,46 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match,
|
|
514
516
|
type = HeaderMatcher::Type::kRange;
|
515
517
|
const envoy_type_v3_Int64Range* range_matcher =
|
516
518
|
envoy_config_route_v3_HeaderMatcher_range_match(header);
|
519
|
+
GPR_ASSERT(range_matcher != nullptr);
|
517
520
|
range_start = envoy_type_v3_Int64Range_start(range_matcher);
|
518
521
|
range_end = envoy_type_v3_Int64Range_end(range_matcher);
|
519
522
|
} else if (envoy_config_route_v3_HeaderMatcher_has_present_match(header)) {
|
520
523
|
type = HeaderMatcher::Type::kPresent;
|
521
524
|
present_match = envoy_config_route_v3_HeaderMatcher_present_match(header);
|
525
|
+
} else if (envoy_config_route_v3_HeaderMatcher_has_string_match(header)) {
|
526
|
+
ValidationErrors::ScopedField field(errors, ".string_match");
|
527
|
+
const auto* matcher =
|
528
|
+
envoy_config_route_v3_HeaderMatcher_string_match(header);
|
529
|
+
GPR_ASSERT(matcher != nullptr);
|
530
|
+
if (envoy_type_matcher_v3_StringMatcher_has_exact(matcher)) {
|
531
|
+
type = HeaderMatcher::Type::kExact;
|
532
|
+
match_string = UpbStringToStdString(
|
533
|
+
envoy_type_matcher_v3_StringMatcher_exact(matcher));
|
534
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_prefix(matcher)) {
|
535
|
+
type = HeaderMatcher::Type::kPrefix;
|
536
|
+
match_string = UpbStringToStdString(
|
537
|
+
envoy_type_matcher_v3_StringMatcher_prefix(matcher));
|
538
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_suffix(matcher)) {
|
539
|
+
type = HeaderMatcher::Type::kSuffix;
|
540
|
+
match_string = UpbStringToStdString(
|
541
|
+
envoy_type_matcher_v3_StringMatcher_suffix(matcher));
|
542
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_contains(matcher)) {
|
543
|
+
type = HeaderMatcher::Type::kContains;
|
544
|
+
match_string = UpbStringToStdString(
|
545
|
+
envoy_type_matcher_v3_StringMatcher_contains(matcher));
|
546
|
+
} else if (envoy_type_matcher_v3_StringMatcher_has_safe_regex(matcher)) {
|
547
|
+
type = HeaderMatcher::Type::kSafeRegex;
|
548
|
+
const auto* regex_matcher =
|
549
|
+
envoy_type_matcher_v3_StringMatcher_safe_regex(matcher);
|
550
|
+
GPR_ASSERT(regex_matcher != nullptr);
|
551
|
+
match_string = UpbStringToStdString(
|
552
|
+
envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
|
553
|
+
} else {
|
554
|
+
errors->AddError("invalid string matcher");
|
555
|
+
continue;
|
556
|
+
}
|
557
|
+
case_sensitive =
|
558
|
+
!envoy_type_matcher_v3_StringMatcher_ignore_case(matcher);
|
522
559
|
} else {
|
523
560
|
errors->AddError("invalid header matcher");
|
524
561
|
continue;
|
@@ -527,7 +564,7 @@ void RouteHeaderMatchersParse(const envoy_config_route_v3_RouteMatch* match,
|
|
527
564
|
envoy_config_route_v3_HeaderMatcher_invert_match(header);
|
528
565
|
absl::StatusOr<HeaderMatcher> header_matcher =
|
529
566
|
HeaderMatcher::Create(name, type, match_string, range_start, range_end,
|
530
|
-
present_match, invert_match);
|
567
|
+
present_match, invert_match, case_sensitive);
|
531
568
|
if (!header_matcher.ok()) {
|
532
569
|
errors->AddError(absl::StrCat("cannot create header matcher: ",
|
533
570
|
header_matcher.status().message()));
|
@@ -248,8 +248,8 @@ XdsRouting::GeneratePerHTTPFilterConfigs(
|
|
248
248
|
FindFilterConfigOverride(http_filter.name, vhost, route,
|
249
249
|
cluster_weight);
|
250
250
|
// Generate service config for filter.
|
251
|
-
auto method_config_field =
|
252
|
-
|
251
|
+
auto method_config_field = filter_impl->GenerateServiceConfig(
|
252
|
+
http_filter.config, config_override, http_filter.name);
|
253
253
|
if (!method_config_field.ok()) {
|
254
254
|
return absl::FailedPreconditionError(absl::StrCat(
|
255
255
|
"failed to generate method config for HTTP filter ", http_filter.name,
|
@@ -47,6 +47,7 @@
|
|
47
47
|
#include "src/core/lib/gprpp/time.h"
|
48
48
|
#include "src/core/lib/iomgr/closure.h"
|
49
49
|
#include "src/core/lib/iomgr/pollset_set.h"
|
50
|
+
#include "src/core/lib/json/json.h"
|
50
51
|
#include "src/core/lib/security/credentials/channel_creds_registry.h"
|
51
52
|
#include "src/core/lib/security/credentials/credentials.h"
|
52
53
|
#include "src/core/lib/slice/slice.h"
|
@@ -255,7 +256,8 @@ grpc_channel* CreateXdsChannel(const ChannelArgs& args,
|
|
255
256
|
const GrpcXdsBootstrap::GrpcXdsServer& server) {
|
256
257
|
RefCountedPtr<grpc_channel_credentials> channel_creds =
|
257
258
|
CoreConfiguration::Get().channel_creds_registry().CreateChannelCreds(
|
258
|
-
server.channel_creds_type(),
|
259
|
+
server.channel_creds_type(),
|
260
|
+
Json::FromObject(server.channel_creds_config()));
|
259
261
|
return grpc_channel_create(server.server_uri().c_str(), channel_creds.get(),
|
260
262
|
args.ToC().get());
|
261
263
|
}
|
data/src/core/lib/avl/avl.h
CHANGED
@@ -43,11 +43,6 @@ class RandomEarlyDetection {
|
|
43
43
|
uint64_t soft_limit() const { return soft_limit_; }
|
44
44
|
uint64_t hard_limit() const { return hard_limit_; }
|
45
45
|
|
46
|
-
void SetLimits(uint64_t soft_limit, uint64_t hard_limit) {
|
47
|
-
soft_limit_ = soft_limit;
|
48
|
-
hard_limit_ = hard_limit;
|
49
|
-
}
|
50
|
-
|
51
46
|
private:
|
52
47
|
// The soft limit is the size at which we start rejecting items with a
|
53
48
|
// probability that increases linearly to 1 as the size approaches the hard
|
@@ -39,6 +39,7 @@
|
|
39
39
|
#include <grpc/support/string_util.h>
|
40
40
|
|
41
41
|
#include "src/core/lib/gpr/useful.h"
|
42
|
+
#include "src/core/lib/gprpp/crash.h"
|
42
43
|
#include "src/core/lib/gprpp/match.h"
|
43
44
|
|
44
45
|
namespace grpc_core {
|
@@ -126,21 +127,55 @@ ChannelArgs ChannelArgs::FromC(const grpc_channel_args* args) {
|
|
126
127
|
return result;
|
127
128
|
}
|
128
129
|
|
130
|
+
grpc_arg ChannelArgs::Value::MakeCArg(const char* name) const {
|
131
|
+
char* c_name = const_cast<char*>(name);
|
132
|
+
return Match(
|
133
|
+
rep_,
|
134
|
+
[c_name](int i) { return grpc_channel_arg_integer_create(c_name, i); },
|
135
|
+
[c_name](const std::shared_ptr<const std::string>& s) {
|
136
|
+
return grpc_channel_arg_string_create(c_name,
|
137
|
+
const_cast<char*>(s->c_str()));
|
138
|
+
},
|
139
|
+
[c_name](const Pointer& p) {
|
140
|
+
return grpc_channel_arg_pointer_create(c_name, p.c_pointer(),
|
141
|
+
p.c_vtable());
|
142
|
+
});
|
143
|
+
}
|
144
|
+
|
145
|
+
bool ChannelArgs::Value::operator<(const Value& rhs) const {
|
146
|
+
if (rhs.rep_.index() != rep_.index()) return rep_.index() < rhs.rep_.index();
|
147
|
+
switch (rep_.index()) {
|
148
|
+
case 0:
|
149
|
+
return absl::get<int>(rep_) < absl::get<int>(rhs.rep_);
|
150
|
+
case 1:
|
151
|
+
return *absl::get<std::shared_ptr<const std::string>>(rep_) <
|
152
|
+
*absl::get<std::shared_ptr<const std::string>>(rhs.rep_);
|
153
|
+
case 2:
|
154
|
+
return absl::get<Pointer>(rep_) < absl::get<Pointer>(rhs.rep_);
|
155
|
+
default:
|
156
|
+
Crash("unreachable");
|
157
|
+
}
|
158
|
+
}
|
159
|
+
|
160
|
+
bool ChannelArgs::Value::operator==(const Value& rhs) const {
|
161
|
+
if (rhs.rep_.index() != rep_.index()) return false;
|
162
|
+
switch (rep_.index()) {
|
163
|
+
case 0:
|
164
|
+
return absl::get<int>(rep_) == absl::get<int>(rhs.rep_);
|
165
|
+
case 1:
|
166
|
+
return *absl::get<std::shared_ptr<const std::string>>(rep_) ==
|
167
|
+
*absl::get<std::shared_ptr<const std::string>>(rhs.rep_);
|
168
|
+
case 2:
|
169
|
+
return absl::get<Pointer>(rep_) == absl::get<Pointer>(rhs.rep_);
|
170
|
+
default:
|
171
|
+
Crash("unreachable");
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
129
175
|
ChannelArgs::CPtr ChannelArgs::ToC() const {
|
130
176
|
std::vector<grpc_arg> c_args;
|
131
177
|
args_.ForEach([&c_args](const std::string& key, const Value& value) {
|
132
|
-
|
133
|
-
c_args.push_back(Match(
|
134
|
-
value,
|
135
|
-
[name](int i) { return grpc_channel_arg_integer_create(name, i); },
|
136
|
-
[name](const std::string& s) {
|
137
|
-
return grpc_channel_arg_string_create(name,
|
138
|
-
const_cast<char*>(s.c_str()));
|
139
|
-
},
|
140
|
-
[name](const Pointer& p) {
|
141
|
-
return grpc_channel_arg_pointer_create(name, p.c_pointer(),
|
142
|
-
p.c_vtable());
|
143
|
-
}));
|
178
|
+
c_args.push_back(value.MakeCArg(key.c_str()));
|
144
179
|
});
|
145
180
|
return CPtr(static_cast<const grpc_channel_args*>(
|
146
181
|
grpc_channel_args_copy_and_add(nullptr, c_args.data(), c_args.size())));
|
@@ -178,8 +213,9 @@ ChannelArgs ChannelArgs::Remove(absl::string_view key) const {
|
|
178
213
|
absl::optional<int> ChannelArgs::GetInt(absl::string_view name) const {
|
179
214
|
auto* v = Get(name);
|
180
215
|
if (v == nullptr) return absl::nullopt;
|
181
|
-
|
182
|
-
return absl::
|
216
|
+
const auto* i = v->GetIfInt();
|
217
|
+
if (i == nullptr) return absl::nullopt;
|
218
|
+
return *i;
|
183
219
|
}
|
184
220
|
|
185
221
|
absl::optional<Duration> ChannelArgs::GetDurationFromIntMillis(
|
@@ -195,8 +231,9 @@ absl::optional<absl::string_view> ChannelArgs::GetString(
|
|
195
231
|
absl::string_view name) const {
|
196
232
|
auto* v = Get(name);
|
197
233
|
if (v == nullptr) return absl::nullopt;
|
198
|
-
|
199
|
-
return absl::
|
234
|
+
const auto* s = v->GetIfString();
|
235
|
+
if (s == nullptr) return absl::nullopt;
|
236
|
+
return *s;
|
200
237
|
}
|
201
238
|
|
202
239
|
absl::optional<std::string> ChannelArgs::GetOwnedString(
|
@@ -209,14 +246,15 @@ absl::optional<std::string> ChannelArgs::GetOwnedString(
|
|
209
246
|
void* ChannelArgs::GetVoidPointer(absl::string_view name) const {
|
210
247
|
auto* v = Get(name);
|
211
248
|
if (v == nullptr) return nullptr;
|
212
|
-
|
213
|
-
|
249
|
+
const auto* pp = v->GetIfPointer();
|
250
|
+
if (pp == nullptr) return nullptr;
|
251
|
+
return pp->c_pointer();
|
214
252
|
}
|
215
253
|
|
216
254
|
absl::optional<bool> ChannelArgs::GetBool(absl::string_view name) const {
|
217
255
|
auto* v = Get(name);
|
218
256
|
if (v == nullptr) return absl::nullopt;
|
219
|
-
auto* i =
|
257
|
+
auto* i = v->GetIfInt();
|
220
258
|
if (i == nullptr) {
|
221
259
|
gpr_log(GPR_ERROR, "%s ignored: it must be an integer",
|
222
260
|
std::string(name).c_str());
|
@@ -238,11 +276,11 @@ std::string ChannelArgs::ToString() const {
|
|
238
276
|
std::vector<std::string> arg_strings;
|
239
277
|
args_.ForEach([&arg_strings](const std::string& key, const Value& value) {
|
240
278
|
std::string value_str;
|
241
|
-
if (auto* i =
|
279
|
+
if (auto* i = value.GetIfInt()) {
|
242
280
|
value_str = std::to_string(*i);
|
243
|
-
} else if (auto* s =
|
281
|
+
} else if (auto* s = value.GetIfString()) {
|
244
282
|
value_str = *s;
|
245
|
-
} else if (auto* p =
|
283
|
+
} else if (auto* p = value.GetIfPointer()) {
|
246
284
|
value_str = absl::StrFormat("%p", p->c_pointer());
|
247
285
|
}
|
248
286
|
arg_strings.push_back(absl::StrCat(key, "=", value_str));
|
@@ -251,6 +289,26 @@ std::string ChannelArgs::ToString() const {
|
|
251
289
|
}
|
252
290
|
|
253
291
|
ChannelArgs ChannelArgs::UnionWith(ChannelArgs other) const {
|
292
|
+
if (args_.Empty()) return other;
|
293
|
+
if (other.args_.Empty()) return *this;
|
294
|
+
if (args_.Height() <= other.args_.Height()) {
|
295
|
+
args_.ForEach([&other](const std::string& key, const Value& value) {
|
296
|
+
other.args_ = other.args_.Add(key, value);
|
297
|
+
});
|
298
|
+
return other;
|
299
|
+
} else {
|
300
|
+
auto result = *this;
|
301
|
+
other.args_.ForEach([&result](const std::string& key, const Value& value) {
|
302
|
+
if (result.args_.Lookup(key) == nullptr) {
|
303
|
+
result.args_ = result.args_.Add(key, value);
|
304
|
+
}
|
305
|
+
});
|
306
|
+
return result;
|
307
|
+
}
|
308
|
+
}
|
309
|
+
|
310
|
+
ChannelArgs ChannelArgs::FuzzingReferenceUnionWith(ChannelArgs other) const {
|
311
|
+
// DO NOT OPTIMIZE THIS!!
|
254
312
|
args_.ForEach([&other](const std::string& key, const Value& value) {
|
255
313
|
other.args_ = other.args_.Add(key, value);
|
256
314
|
});
|
@@ -281,7 +281,35 @@ class ChannelArgs {
|
|
281
281
|
const grpc_arg_pointer_vtable* vtable_;
|
282
282
|
};
|
283
283
|
|
284
|
-
|
284
|
+
class Value {
|
285
|
+
public:
|
286
|
+
explicit Value(int n) : rep_(n) {}
|
287
|
+
explicit Value(std::string s)
|
288
|
+
: rep_(std::make_shared<const std::string>(std::move(s))) {}
|
289
|
+
explicit Value(Pointer p) : rep_(std::move(p)) {}
|
290
|
+
|
291
|
+
const int* GetIfInt() const { return absl::get_if<int>(&rep_); }
|
292
|
+
const std::string* GetIfString() const {
|
293
|
+
auto* p = absl::get_if<std::shared_ptr<const std::string>>(&rep_);
|
294
|
+
if (p == nullptr) return nullptr;
|
295
|
+
return p->get();
|
296
|
+
}
|
297
|
+
const Pointer* GetIfPointer() const { return absl::get_if<Pointer>(&rep_); }
|
298
|
+
|
299
|
+
grpc_arg MakeCArg(const char* name) const;
|
300
|
+
|
301
|
+
bool operator<(const Value& rhs) const;
|
302
|
+
bool operator==(const Value& rhs) const;
|
303
|
+
bool operator!=(const Value& rhs) const { return !this->operator==(rhs); }
|
304
|
+
bool operator==(absl::string_view rhs) const {
|
305
|
+
auto* p = absl::get_if<std::shared_ptr<const std::string>>(&rep_);
|
306
|
+
if (p == nullptr) return false;
|
307
|
+
return **p == rhs;
|
308
|
+
}
|
309
|
+
|
310
|
+
private:
|
311
|
+
absl::variant<int, std::shared_ptr<const std::string>, Pointer> rep_;
|
312
|
+
};
|
285
313
|
|
286
314
|
struct ChannelArgsDeleter {
|
287
315
|
void operator()(const grpc_channel_args* p) const;
|
@@ -307,6 +335,11 @@ class ChannelArgs {
|
|
307
335
|
// If a key is present in both, the value from this is used.
|
308
336
|
GRPC_MUST_USE_RESULT ChannelArgs UnionWith(ChannelArgs other) const;
|
309
337
|
|
338
|
+
// Only used in union_with_test.cc, reference version of UnionWith for
|
339
|
+
// differential fuzzing.
|
340
|
+
GRPC_MUST_USE_RESULT ChannelArgs
|
341
|
+
FuzzingReferenceUnionWith(ChannelArgs other) const;
|
342
|
+
|
310
343
|
const Value* Get(absl::string_view name) const;
|
311
344
|
GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
|
312
345
|
Pointer value) const;
|
@@ -21,10 +21,12 @@
|
|
21
21
|
#include "src/core/lib/channel/channel_trace.h"
|
22
22
|
|
23
23
|
#include <algorithm>
|
24
|
-
#include <string>
|
25
24
|
#include <utility>
|
26
25
|
|
26
|
+
#include "absl/strings/str_cat.h"
|
27
|
+
|
27
28
|
#include <grpc/support/alloc.h>
|
29
|
+
#include <grpc/support/json.h>
|
28
30
|
|
29
31
|
#include "src/core/lib/channel/channelz.h"
|
30
32
|
#include "src/core/lib/gpr/string.h"
|
@@ -140,21 +142,21 @@ const char* severity_string(ChannelTrace::Severity severity) {
|
|
140
142
|
Json ChannelTrace::TraceEvent::RenderTraceEvent() const {
|
141
143
|
char* description = grpc_slice_to_c_string(data_);
|
142
144
|
Json::Object object = {
|
143
|
-
{"description", description},
|
144
|
-
{"severity", severity_string(severity_)},
|
145
|
-
{"timestamp", gpr_format_timespec(timestamp_)},
|
145
|
+
{"description", Json::FromString(description)},
|
146
|
+
{"severity", Json::FromString(severity_string(severity_))},
|
147
|
+
{"timestamp", Json::FromString(gpr_format_timespec(timestamp_))},
|
146
148
|
};
|
147
149
|
gpr_free(description);
|
148
150
|
if (referenced_entity_ != nullptr) {
|
149
151
|
const bool is_channel =
|
150
152
|
(referenced_entity_->type() == BaseNode::EntityType::kTopLevelChannel ||
|
151
153
|
referenced_entity_->type() == BaseNode::EntityType::kInternalChannel);
|
152
|
-
object[is_channel ? "channelRef" : "subchannelRef"] = Json::
|
154
|
+
object[is_channel ? "channelRef" : "subchannelRef"] = Json::FromObject({
|
153
155
|
{(is_channel ? "channelId" : "subchannelId"),
|
154
|
-
|
155
|
-
};
|
156
|
+
Json::FromString(absl::StrCat(referenced_entity_->uuid()))},
|
157
|
+
});
|
156
158
|
}
|
157
|
-
return object;
|
159
|
+
return Json::FromObject(std::move(object));
|
158
160
|
}
|
159
161
|
|
160
162
|
Json ChannelTrace::RenderJson() const {
|
@@ -163,10 +165,12 @@ Json ChannelTrace::RenderJson() const {
|
|
163
165
|
return Json(); // JSON null
|
164
166
|
}
|
165
167
|
Json::Object object = {
|
166
|
-
{"creationTimestamp",
|
168
|
+
{"creationTimestamp",
|
169
|
+
Json::FromString(gpr_format_timespec(time_created_))},
|
167
170
|
};
|
168
171
|
if (num_events_logged_ > 0) {
|
169
|
-
object["numEventsLogged"] =
|
172
|
+
object["numEventsLogged"] =
|
173
|
+
Json::FromString(absl::StrCat(num_events_logged_));
|
170
174
|
}
|
171
175
|
// Only add in the event list if it is non-empty.
|
172
176
|
if (head_trace_ != nullptr) {
|
@@ -174,9 +178,9 @@ Json ChannelTrace::RenderJson() const {
|
|
174
178
|
for (TraceEvent* it = head_trace_; it != nullptr; it = it->next()) {
|
175
179
|
array.emplace_back(it->RenderTraceEvent());
|
176
180
|
}
|
177
|
-
object["events"] = std::move(array);
|
181
|
+
object["events"] = Json::FromArray(std::move(array));
|
178
182
|
}
|
179
|
-
return object;
|
183
|
+
return Json::FromObject(std::move(object));
|
180
184
|
}
|
181
185
|
|
182
186
|
} // namespace channelz
|