grpc 1.34.0 → 1.35.0.pre1
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 +808 -2787
- data/etc/roots.pem +257 -573
- data/include/grpc/compression.h +1 -1
- data/include/grpc/grpc.h +14 -0
- data/include/grpc/grpc_security.h +61 -3
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +1 -1
- data/include/grpc/impl/codegen/log.h +0 -2
- data/include/grpc/impl/codegen/sync_windows.h +4 -0
- data/include/grpc/slice_buffer.h +3 -3
- data/include/grpc/support/sync.h +3 -3
- data/include/grpc/support/time.h +7 -7
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
- data/src/core/ext/filters/client_channel/client_channel.h +0 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
- data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
- data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
- data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
- data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
- data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
- data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
- data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
- data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
- data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
- data/src/core/ext/filters/client_channel/subchannel.h +12 -18
- data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
- data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
- data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
- data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
- data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
- data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
- data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
- data/src/core/ext/xds/certificate_provider_store.cc +10 -7
- data/src/core/ext/xds/certificate_provider_store.h +12 -7
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
- data/src/core/ext/xds/xds_api.cc +220 -31
- data/src/core/ext/xds/xds_api.h +41 -10
- data/src/core/ext/xds/xds_bootstrap.h +0 -1
- data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
- data/src/core/ext/xds/xds_certificate_provider.h +40 -2
- data/src/core/ext/xds/xds_client.cc +31 -29
- data/src/core/ext/xds/xds_client.h +6 -1
- data/src/core/ext/xds/xds_client_stats.cc +2 -2
- data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
- data/src/core/lib/channel/channel_args.cc +8 -8
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +13 -14
- data/src/core/lib/channel/channelz.h +0 -1
- data/src/core/lib/channel/channelz_registry.h +0 -1
- data/src/core/lib/channel/handshaker.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +3 -2
- data/src/core/lib/debug/stats.h +2 -2
- data/src/core/lib/debug/stats_data.h +13 -13
- data/src/core/lib/gpr/alloc.cc +3 -2
- data/src/core/lib/gpr/log.cc +53 -16
- data/src/core/lib/gpr/log_linux.cc +3 -1
- data/src/core/lib/gpr/log_posix.cc +3 -1
- data/src/core/lib/gpr/log_windows.cc +3 -1
- data/src/core/lib/gpr/spinlock.h +10 -2
- data/src/core/lib/gpr/string.cc +22 -21
- data/src/core/lib/gpr/string.h +5 -6
- data/src/core/lib/gpr/sync.cc +4 -4
- data/src/core/lib/gpr/time.cc +12 -12
- data/src/core/lib/gprpp/arena.h +3 -2
- data/src/core/lib/gprpp/ref_counted.h +2 -2
- data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
- data/src/core/lib/gprpp/thd_posix.cc +6 -1
- data/src/core/lib/gprpp/thd_windows.cc +3 -1
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli.h +2 -3
- data/src/core/lib/http/httpcli_security_connector.cc +1 -1
- data/src/core/lib/http/parser.cc +1 -2
- data/src/core/lib/iomgr/call_combiner.cc +8 -5
- data/src/core/lib/iomgr/combiner.cc +2 -1
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/error.cc +15 -11
- data/src/core/lib/iomgr/error_internal.h +1 -1
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
- data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
- data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
- data/src/core/lib/iomgr/exec_ctx.h +6 -4
- data/src/core/lib/iomgr/executor.cc +2 -1
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/executor/threadpool.h +1 -1
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +1 -1
- data/src/core/lib/iomgr/lockfree_event.cc +19 -14
- data/src/core/lib/iomgr/lockfree_event.h +2 -2
- data/src/core/lib/iomgr/parse_address.cc +52 -46
- data/src/core/lib/iomgr/parse_address.h +13 -9
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
- data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +4 -4
- data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
- data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
- data/src/core/lib/iomgr/socket_mutator.cc +3 -2
- data/src/core/lib/iomgr/tcp_client.cc +3 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
- data/src/core/lib/iomgr/tcp_custom.cc +22 -17
- data/src/core/lib/iomgr/tcp_posix.cc +9 -6
- data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
- data/src/core/lib/iomgr/timer_custom.cc +3 -3
- data/src/core/lib/iomgr/timer_generic.cc +3 -3
- data/src/core/lib/iomgr/timer_manager.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +1 -2
- data/src/core/lib/iomgr/udp_server.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
- data/src/core/lib/json/json.h +10 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
- data/src/core/lib/security/authorization/evaluate_args.h +1 -1
- data/src/core/lib/security/context/security_context.cc +4 -3
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
- data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
- data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
- data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +3 -2
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
- data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +2 -2
- data/src/core/lib/surface/call.cc +32 -24
- data/src/core/lib/surface/call_details.cc +8 -8
- data/src/core/lib/surface/channel.cc +16 -10
- data/src/core/lib/surface/channel.h +3 -2
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +23 -18
- data/src/core/lib/surface/completion_queue.h +16 -16
- data/src/core/lib/surface/init.cc +6 -5
- data/src/core/lib/surface/lame_client.cc +20 -46
- data/src/core/lib/surface/lame_client.h +4 -0
- data/src/core/lib/surface/server.cc +59 -15
- data/src/core/lib/surface/server.h +37 -5
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/authority_override.cc +6 -4
- data/src/core/lib/transport/authority_override.h +5 -2
- data/src/core/lib/transport/connectivity_state.h +6 -4
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +4 -3
- data/src/core/lib/transport/transport.h +7 -7
- data/src/core/lib/uri/uri_parser.cc +131 -249
- data/src/core/lib/uri/uri_parser.h +57 -21
- data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
- data/src/core/tsi/alts/crypt/gsec.cc +5 -4
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
- data/src/core/tsi/fake_transport_security.cc +5 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +62 -49
- data/src/core/tsi/ssl_transport_security.h +6 -6
- data/src/core/tsi/transport_security.cc +6 -6
- data/src/core/tsi/transport_security_interface.h +1 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
- data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
- data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
- data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
- data/third_party/upb/upb/decode.c +248 -167
- data/third_party/upb/upb/decode.h +20 -1
- data/third_party/upb/upb/decode.int.h +163 -0
- data/third_party/upb/upb/decode_fast.c +1040 -0
- data/third_party/upb/upb/decode_fast.h +126 -0
- data/third_party/upb/upb/def.c +525 -516
- data/third_party/upb/upb/def.h +16 -31
- data/third_party/upb/upb/def.hpp +37 -123
- data/third_party/upb/upb/encode.c +227 -169
- data/third_party/upb/upb/encode.h +27 -2
- data/third_party/upb/upb/json_decode.c +1443 -0
- data/third_party/upb/upb/json_decode.h +23 -0
- data/third_party/upb/upb/json_encode.c +713 -0
- data/third_party/upb/upb/json_encode.h +36 -0
- data/third_party/upb/upb/msg.c +167 -88
- data/third_party/upb/upb/msg.h +174 -34
- data/third_party/upb/upb/port_def.inc +74 -61
- data/third_party/upb/upb/port_undef.inc +3 -7
- data/third_party/upb/upb/reflection.c +36 -19
- data/third_party/upb/upb/table.c +34 -197
- data/third_party/upb/upb/table.int.h +14 -5
- data/third_party/upb/upb/text_encode.c +45 -22
- data/third_party/upb/upb/text_encode.h +4 -1
- data/third_party/upb/upb/upb.c +18 -41
- data/third_party/upb/upb/upb.h +36 -7
- data/third_party/upb/upb/upb.hpp +4 -4
- data/third_party/upb/upb/upb.int.h +29 -0
- metadata +60 -46
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
- data/src/core/lib/gprpp/map.h +0 -53
- data/third_party/upb/upb/port.c +0 -26
@@ -105,7 +105,7 @@ LoadBalancingPolicy::PickResult LoadBalancingPolicy::QueuePicker::Pick(
|
|
105
105
|
// 2. We are currently running in the data plane mutex, but we
|
106
106
|
// need to bounce into the control plane work_serializer to call
|
107
107
|
// ExitIdleLocked().
|
108
|
-
if (!exit_idle_called_) {
|
108
|
+
if (!exit_idle_called_ && parent_ != nullptr) {
|
109
109
|
exit_idle_called_ = true;
|
110
110
|
auto* parent = parent_->Ref().release(); // ref held by lambda.
|
111
111
|
ExecCtx::Run(DEBUG_LOCATION,
|
@@ -30,7 +30,6 @@
|
|
30
30
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
31
31
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
32
32
|
#include "src/core/ext/filters/client_channel/subchannel_interface.h"
|
33
|
-
#include "src/core/lib/gprpp/map.h"
|
34
33
|
#include "src/core/lib/gprpp/orphanable.h"
|
35
34
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
36
35
|
#include "src/core/lib/iomgr/polling_entity.h"
|
@@ -95,11 +94,11 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
|
|
95
94
|
/// Application-specific requests cost metrics. Metric names are
|
96
95
|
/// determined by the application. Each value is an absolute cost
|
97
96
|
/// (e.g. 3487 bytes of storage) associated with the request.
|
98
|
-
std::map<absl::string_view, double
|
97
|
+
std::map<absl::string_view, double> request_cost;
|
99
98
|
/// Application-specific resource utilization metrics. Metric names
|
100
99
|
/// are determined by the application. Each value is expressed as a
|
101
100
|
/// fraction of total resources available.
|
102
|
-
std::map<absl::string_view, double
|
101
|
+
std::map<absl::string_view, double> utilization;
|
103
102
|
};
|
104
103
|
|
105
104
|
/// Interface for accessing per-call state.
|
@@ -68,6 +68,7 @@
|
|
68
68
|
#include "absl/strings/str_cat.h"
|
69
69
|
#include "absl/strings/str_format.h"
|
70
70
|
#include "absl/strings/str_join.h"
|
71
|
+
#include "absl/strings/strip.h"
|
71
72
|
|
72
73
|
#include "upb/upb.hpp"
|
73
74
|
|
@@ -426,7 +427,7 @@ class GrpcLb : public LoadBalancingPolicy {
|
|
426
427
|
void CreateOrUpdateChildPolicyLocked();
|
427
428
|
|
428
429
|
// Who the client is trying to communicate with.
|
429
|
-
|
430
|
+
std::string server_name_;
|
430
431
|
// Configurations for the policy.
|
431
432
|
RefCountedPtr<GrpcLbConfig> config_;
|
432
433
|
|
@@ -491,7 +492,7 @@ bool GrpcLb::Serverlist::operator==(const Serverlist& other) const {
|
|
491
492
|
void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
492
493
|
memset(addr, 0, sizeof(*addr));
|
493
494
|
if (server.drop) return;
|
494
|
-
const uint16_t netorder_port = grpc_htons((
|
495
|
+
const uint16_t netorder_port = grpc_htons(static_cast<uint16_t>(server.port));
|
495
496
|
/* the addresses are given in binary format (a in(6)_addr struct) in
|
496
497
|
* server->ip_address.bytes. */
|
497
498
|
if (server.ip_size == 4) {
|
@@ -502,7 +503,8 @@ void ParseServer(const GrpcLbServer& server, grpc_resolved_address* addr) {
|
|
502
503
|
addr4->sin_port = netorder_port;
|
503
504
|
} else if (server.ip_size == 16) {
|
504
505
|
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
|
505
|
-
grpc_sockaddr_in6* addr6 =
|
506
|
+
grpc_sockaddr_in6* addr6 =
|
507
|
+
reinterpret_cast<grpc_sockaddr_in6*>(&addr->addr);
|
506
508
|
addr6->sin6_family = GRPC_AF_INET6;
|
507
509
|
memcpy(&addr6->sin6_addr, server.ip_addr, server.ip_size);
|
508
510
|
addr6->sin6_port = netorder_port;
|
@@ -532,17 +534,18 @@ bool IsServerValid(const GrpcLbServer& server, size_t idx, bool log) {
|
|
532
534
|
if (GPR_UNLIKELY(server.port >> 16 != 0)) {
|
533
535
|
if (log) {
|
534
536
|
gpr_log(GPR_ERROR,
|
535
|
-
"Invalid port '%d' at index %
|
536
|
-
|
537
|
+
"Invalid port '%d' at index %" PRIuPTR
|
538
|
+
" of serverlist. Ignoring.",
|
539
|
+
server.port, idx);
|
537
540
|
}
|
538
541
|
return false;
|
539
542
|
}
|
540
543
|
if (GPR_UNLIKELY(server.ip_size != 4 && server.ip_size != 16)) {
|
541
544
|
if (log) {
|
542
545
|
gpr_log(GPR_ERROR,
|
543
|
-
"Expected IP to be 4 or 16 bytes, got %d at index %
|
544
|
-
"serverlist. Ignoring",
|
545
|
-
server.ip_size,
|
546
|
+
"Expected IP to be 4 or 16 bytes, got %d at index %" PRIuPTR
|
547
|
+
" of serverlist. Ignoring",
|
548
|
+
server.ip_size, idx);
|
546
549
|
}
|
547
550
|
return false;
|
548
551
|
}
|
@@ -754,8 +757,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
754
757
|
// Init the LB call. Note that the LB call will progress every time there's
|
755
758
|
// activity in grpclb_policy_->interested_parties(), which is comprised of
|
756
759
|
// the polling entities from client_channel.
|
757
|
-
GPR_ASSERT(grpclb_policy()->server_name_
|
758
|
-
GPR_ASSERT(grpclb_policy()->server_name_[0] != '\0');
|
760
|
+
GPR_ASSERT(!grpclb_policy()->server_name_.empty());
|
759
761
|
// Closure Initialization
|
760
762
|
GRPC_CLOSURE_INIT(&lb_on_initial_request_sent_, OnInitialRequestSent, this,
|
761
763
|
grpc_schedule_on_exec_ctx);
|
@@ -778,7 +780,7 @@ GrpcLb::BalancerCallState::BalancerCallState(
|
|
778
780
|
upb::Arena arena;
|
779
781
|
grpc_slice request_payload_slice = GrpcLbRequestCreate(
|
780
782
|
grpclb_policy()->config_->service_name().empty()
|
781
|
-
? grpclb_policy()->server_name_
|
783
|
+
? grpclb_policy()->server_name_.c_str()
|
782
784
|
: grpclb_policy()->config_->service_name().c_str(),
|
783
785
|
arena.ptr());
|
784
786
|
send_message_payload_ =
|
@@ -844,8 +846,9 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
844
846
|
// with the callback.
|
845
847
|
auto self = Ref(DEBUG_LOCATION, "on_initial_request_sent");
|
846
848
|
self.release();
|
847
|
-
call_error = grpc_call_start_batch_and_execute(
|
848
|
-
|
849
|
+
call_error = grpc_call_start_batch_and_execute(lb_call_, ops,
|
850
|
+
static_cast<size_t>(op - ops),
|
851
|
+
&lb_on_initial_request_sent_);
|
849
852
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
850
853
|
// Op: recv initial metadata.
|
851
854
|
op = ops;
|
@@ -867,7 +870,8 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
867
870
|
self = Ref(DEBUG_LOCATION, "on_message_received");
|
868
871
|
self.release();
|
869
872
|
call_error = grpc_call_start_batch_and_execute(
|
870
|
-
lb_call_, ops,
|
873
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
874
|
+
&lb_on_balancer_message_received_);
|
871
875
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
872
876
|
// Op: recv server status.
|
873
877
|
op = ops;
|
@@ -883,7 +887,8 @@ void GrpcLb::BalancerCallState::StartQuery() {
|
|
883
887
|
// ref instead of a new ref. When it's invoked, it's the initial ref that is
|
884
888
|
// unreffed.
|
885
889
|
call_error = grpc_call_start_batch_and_execute(
|
886
|
-
lb_call_, ops,
|
890
|
+
lb_call_, ops, static_cast<size_t>(op - ops),
|
891
|
+
&lb_on_balancer_status_received_);
|
887
892
|
GPR_ASSERT(GRPC_CALL_OK == call_error);
|
888
893
|
}
|
889
894
|
|
@@ -1335,15 +1340,14 @@ GrpcLb::GrpcLb(Args args)
|
|
1335
1340
|
const grpc_arg* arg = grpc_channel_args_find(args.args, GRPC_ARG_SERVER_URI);
|
1336
1341
|
const char* server_uri = grpc_channel_arg_get_string(arg);
|
1337
1342
|
GPR_ASSERT(server_uri != nullptr);
|
1338
|
-
|
1339
|
-
GPR_ASSERT(uri->path
|
1340
|
-
server_name_ =
|
1343
|
+
absl::StatusOr<URI> uri = URI::Parse(server_uri);
|
1344
|
+
GPR_ASSERT(uri.ok() && !uri->path().empty());
|
1345
|
+
server_name_ = std::string(absl::StripPrefix(uri->path(), "/"));
|
1341
1346
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
|
1342
1347
|
gpr_log(GPR_INFO,
|
1343
1348
|
"[grpclb %p] Will use '%s' as the server name for LB request.",
|
1344
|
-
this, server_name_);
|
1349
|
+
this, server_name_.c_str());
|
1345
1350
|
}
|
1346
|
-
grpc_uri_destroy(uri);
|
1347
1351
|
// Record LB call timeout.
|
1348
1352
|
arg = grpc_channel_args_find(args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS);
|
1349
1353
|
lb_call_timeout_ms_ = grpc_channel_arg_get_integer(arg, {0, 0, INT_MAX});
|
@@ -1353,10 +1357,7 @@ GrpcLb::GrpcLb(Args args)
|
|
1353
1357
|
arg, {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX});
|
1354
1358
|
}
|
1355
1359
|
|
1356
|
-
GrpcLb::~GrpcLb() {
|
1357
|
-
gpr_free((void*)server_name_);
|
1358
|
-
grpc_channel_args_destroy(args_);
|
1359
|
-
}
|
1360
|
+
GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
|
1360
1361
|
|
1361
1362
|
void GrpcLb::ShutdownLocked() {
|
1362
1363
|
shutting_down_ = true;
|
@@ -1457,7 +1458,7 @@ void GrpcLb::ProcessAddressesAndChannelArgsLocked(
|
|
1457
1458
|
// since we use this to trigger the client_load_reporting filter.
|
1458
1459
|
static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
|
1459
1460
|
grpc_arg new_arg = grpc_channel_arg_string_create(
|
1460
|
-
(
|
1461
|
+
const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
|
1461
1462
|
grpc_channel_args_destroy(args_);
|
1462
1463
|
args_ = grpc_channel_args_copy_and_add_and_remove(
|
1463
1464
|
&args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
@@ -1766,7 +1767,8 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
|
|
1766
1767
|
// will minimize the number of metadata elements that the filter
|
1767
1768
|
// needs to iterate through to find the ClientStats object.
|
1768
1769
|
return grpc_channel_stack_builder_prepend_filter(
|
1769
|
-
builder,
|
1770
|
+
builder, static_cast<const grpc_channel_filter*>(arg), nullptr,
|
1771
|
+
nullptr);
|
1770
1772
|
}
|
1771
1773
|
return true;
|
1772
1774
|
}
|
@@ -1777,10 +1779,10 @@ void grpc_lb_policy_grpclb_init() {
|
|
1777
1779
|
grpc_core::LoadBalancingPolicyRegistry::Builder::
|
1778
1780
|
RegisterLoadBalancingPolicyFactory(
|
1779
1781
|
absl::make_unique<grpc_core::GrpcLbFactory>());
|
1780
|
-
grpc_channel_init_register_stage(
|
1781
|
-
|
1782
|
-
|
1783
|
-
|
1782
|
+
grpc_channel_init_register_stage(
|
1783
|
+
GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
|
1784
|
+
maybe_add_client_load_reporting_filter,
|
1785
|
+
const_cast<grpc_channel_filter*>(&grpc_client_load_reporting_filter));
|
1784
1786
|
}
|
1785
1787
|
|
1786
1788
|
void grpc_lb_policy_grpclb_shutdown() {}
|
@@ -155,13 +155,13 @@ grpc_millis grpc_grpclb_duration_to_millis(
|
|
155
155
|
|
156
156
|
} // namespace
|
157
157
|
|
158
|
-
bool GrpcLbResponseParse(const grpc_slice&
|
158
|
+
bool GrpcLbResponseParse(const grpc_slice& serialized_response,
|
159
159
|
upb_arena* arena, GrpcLbResponse* result) {
|
160
160
|
grpc_lb_v1_LoadBalanceResponse* response =
|
161
161
|
grpc_lb_v1_LoadBalanceResponse_parse(
|
162
162
|
reinterpret_cast<const char*>(
|
163
|
-
GRPC_SLICE_START_PTR(
|
164
|
-
GRPC_SLICE_LENGTH(
|
163
|
+
GRPC_SLICE_START_PTR(serialized_response)),
|
164
|
+
GRPC_SLICE_LENGTH(serialized_response), arena);
|
165
165
|
// Handle serverlist responses.
|
166
166
|
if (ParseServerList(*response, &result->serverlist)) {
|
167
167
|
result->type = result->SERVERLIST;
|
@@ -66,7 +66,7 @@ grpc_slice GrpcLbLoadReportRequestCreate(
|
|
66
66
|
|
67
67
|
// Deserialize a grpclb response.
|
68
68
|
bool GrpcLbResponseParse(const grpc_slice& serialized_response,
|
69
|
-
upb_arena* arena, GrpcLbResponse*
|
69
|
+
upb_arena* arena, GrpcLbResponse* result);
|
70
70
|
|
71
71
|
} // namespace grpc_core
|
72
72
|
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include "src/core/ext/filters/client_channel/lb_policy_factory.h"
|
25
25
|
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
26
26
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
27
|
+
#include "src/core/ext/xds/xds_certificate_provider.h"
|
27
28
|
#include "src/core/ext/xds/xds_client.h"
|
28
29
|
#include "src/core/lib/channel/channel_args.h"
|
29
30
|
#include "src/core/lib/gprpp/memory.h"
|
@@ -31,6 +32,7 @@
|
|
31
32
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
32
33
|
#include "src/core/lib/iomgr/closure.h"
|
33
34
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
35
|
+
#include "src/core/lib/security/credentials/xds/xds_credentials.h"
|
34
36
|
#include "src/core/lib/transport/error_utils.h"
|
35
37
|
|
36
38
|
namespace grpc_core {
|
@@ -121,6 +123,9 @@ class CdsLb : public LoadBalancingPolicy {
|
|
121
123
|
void OnError(grpc_error* error);
|
122
124
|
void OnResourceDoesNotExist();
|
123
125
|
|
126
|
+
grpc_error* UpdateXdsCertificateProvider(
|
127
|
+
const XdsApi::CdsUpdate& cluster_data);
|
128
|
+
|
124
129
|
void MaybeDestroyChildPolicyLocked();
|
125
130
|
|
126
131
|
RefCountedPtr<CdsLbConfig> config_;
|
@@ -134,6 +139,10 @@ class CdsLb : public LoadBalancingPolicy {
|
|
134
139
|
// Note that this is not owned, so this pointer must never be derefernced.
|
135
140
|
ClusterWatcher* cluster_watcher_ = nullptr;
|
136
141
|
|
142
|
+
RefCountedPtr<grpc_tls_certificate_provider> root_certificate_provider_;
|
143
|
+
RefCountedPtr<grpc_tls_certificate_provider> identity_certificate_provider_;
|
144
|
+
RefCountedPtr<XdsCertificateProvider> xds_certificate_provider_;
|
145
|
+
|
137
146
|
// Child LB policy.
|
138
147
|
OrphanablePtr<LoadBalancingPolicy> child_policy_;
|
139
148
|
|
@@ -312,20 +321,32 @@ void CdsLb::UpdateLocked(UpdateArgs args) {
|
|
312
321
|
|
313
322
|
void CdsLb::OnClusterChanged(XdsApi::CdsUpdate cluster_data) {
|
314
323
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
315
|
-
gpr_log(GPR_INFO,
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
: "(unset)",
|
323
|
-
cluster_data.max_concurrent_requests);
|
324
|
+
gpr_log(GPR_INFO, "[cdslb %p] received CDS update from xds client %p: %s",
|
325
|
+
this, xds_client_.get(), cluster_data.ToString().c_str());
|
326
|
+
}
|
327
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
328
|
+
error = UpdateXdsCertificateProvider(cluster_data);
|
329
|
+
if (error != GRPC_ERROR_NONE) {
|
330
|
+
return OnError(error);
|
324
331
|
}
|
325
332
|
// Construct config for child policy.
|
326
|
-
Json::Object
|
333
|
+
Json::Object discovery_mechanism = {
|
327
334
|
{"clusterName", config_->cluster()},
|
328
335
|
{"max_concurrent_requests", cluster_data.max_concurrent_requests},
|
336
|
+
{"type", "EDS"},
|
337
|
+
};
|
338
|
+
if (!cluster_data.eds_service_name.empty()) {
|
339
|
+
discovery_mechanism["edsServiceName"] = cluster_data.eds_service_name;
|
340
|
+
}
|
341
|
+
if (cluster_data.lrs_load_reporting_server_name.has_value()) {
|
342
|
+
discovery_mechanism["lrsLoadReportingServerName"] =
|
343
|
+
cluster_data.lrs_load_reporting_server_name.value();
|
344
|
+
}
|
345
|
+
Json::Object child_config = {
|
346
|
+
{"discoveryMechanisms",
|
347
|
+
Json::Array{
|
348
|
+
discovery_mechanism,
|
349
|
+
}},
|
329
350
|
{"localityPickingPolicy",
|
330
351
|
Json::Array{
|
331
352
|
Json::Object{
|
@@ -342,16 +363,9 @@ void CdsLb::OnClusterChanged(XdsApi::CdsUpdate cluster_data) {
|
|
342
363
|
},
|
343
364
|
}},
|
344
365
|
};
|
345
|
-
if (!cluster_data.eds_service_name.empty()) {
|
346
|
-
child_config["edsServiceName"] = cluster_data.eds_service_name;
|
347
|
-
}
|
348
|
-
if (cluster_data.lrs_load_reporting_server_name.has_value()) {
|
349
|
-
child_config["lrsLoadReportingServerName"] =
|
350
|
-
cluster_data.lrs_load_reporting_server_name.value();
|
351
|
-
}
|
352
366
|
Json json = Json::Array{
|
353
367
|
Json::Object{
|
354
|
-
{"
|
368
|
+
{"xds_cluster_resolver_experimental", std::move(child_config)},
|
355
369
|
},
|
356
370
|
};
|
357
371
|
if (GRPC_TRACE_FLAG_ENABLED(grpc_cds_lb_trace)) {
|
@@ -359,7 +373,6 @@ void CdsLb::OnClusterChanged(XdsApi::CdsUpdate cluster_data) {
|
|
359
373
|
gpr_log(GPR_INFO, "[cdslb %p] generated config for child policy: %s", this,
|
360
374
|
json_str.c_str());
|
361
375
|
}
|
362
|
-
grpc_error* error = GRPC_ERROR_NONE;
|
363
376
|
RefCountedPtr<LoadBalancingPolicy::Config> config =
|
364
377
|
LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(json, &error);
|
365
378
|
if (error != GRPC_ERROR_NONE) {
|
@@ -389,7 +402,12 @@ void CdsLb::OnClusterChanged(XdsApi::CdsUpdate cluster_data) {
|
|
389
402
|
// Update child policy.
|
390
403
|
UpdateArgs args;
|
391
404
|
args.config = std::move(config);
|
392
|
-
|
405
|
+
if (xds_certificate_provider_ != nullptr) {
|
406
|
+
grpc_arg arg_to_add = xds_certificate_provider_->MakeChannelArg();
|
407
|
+
args.args = grpc_channel_args_copy_and_add(args_, &arg_to_add, 1);
|
408
|
+
} else {
|
409
|
+
args.args = grpc_channel_args_copy(args_);
|
410
|
+
}
|
393
411
|
child_policy_->UpdateLocked(std::move(args));
|
394
412
|
}
|
395
413
|
|
@@ -425,6 +443,130 @@ void CdsLb::OnResourceDoesNotExist() {
|
|
425
443
|
MaybeDestroyChildPolicyLocked();
|
426
444
|
}
|
427
445
|
|
446
|
+
grpc_error* CdsLb::UpdateXdsCertificateProvider(
|
447
|
+
const XdsApi::CdsUpdate& cluster_data) {
|
448
|
+
// Early out if channel is not configured to use xds security.
|
449
|
+
grpc_channel_credentials* channel_credentials =
|
450
|
+
grpc_channel_credentials_find_in_args(args_);
|
451
|
+
if (channel_credentials == nullptr ||
|
452
|
+
channel_credentials->type() != kCredentialsTypeXds) {
|
453
|
+
xds_certificate_provider_ = nullptr;
|
454
|
+
return GRPC_ERROR_NONE;
|
455
|
+
}
|
456
|
+
absl::string_view root_provider_instance_name =
|
457
|
+
cluster_data.common_tls_context.combined_validation_context
|
458
|
+
.validation_context_certificate_provider_instance.instance_name;
|
459
|
+
absl::string_view root_provider_cert_name =
|
460
|
+
cluster_data.common_tls_context.combined_validation_context
|
461
|
+
.validation_context_certificate_provider_instance.certificate_name;
|
462
|
+
absl::string_view identity_provider_instance_name =
|
463
|
+
cluster_data.common_tls_context
|
464
|
+
.tls_certificate_certificate_provider_instance.instance_name;
|
465
|
+
absl::string_view identity_provider_cert_name =
|
466
|
+
cluster_data.common_tls_context
|
467
|
+
.tls_certificate_certificate_provider_instance.certificate_name;
|
468
|
+
RefCountedPtr<XdsCertificateProvider> new_root_provider;
|
469
|
+
if (!root_provider_instance_name.empty()) {
|
470
|
+
new_root_provider =
|
471
|
+
xds_client_->certificate_provider_store()
|
472
|
+
.CreateOrGetCertificateProvider(root_provider_instance_name);
|
473
|
+
if (new_root_provider == nullptr) {
|
474
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
475
|
+
absl::StrCat("Certificate provider instance name: \"",
|
476
|
+
root_provider_instance_name, "\" not recognized.")
|
477
|
+
.c_str());
|
478
|
+
}
|
479
|
+
}
|
480
|
+
if (root_certificate_provider_ != new_root_provider) {
|
481
|
+
if (root_certificate_provider_ != nullptr &&
|
482
|
+
root_certificate_provider_->interested_parties() != nullptr) {
|
483
|
+
grpc_pollset_set_del_pollset_set(
|
484
|
+
interested_parties(),
|
485
|
+
root_certificate_provider_->interested_parties());
|
486
|
+
}
|
487
|
+
if (new_root_provider != nullptr &&
|
488
|
+
new_root_provider->interested_parties() != nullptr) {
|
489
|
+
grpc_pollset_set_add_pollset_set(interested_parties(),
|
490
|
+
new_root_provider->interested_parties());
|
491
|
+
}
|
492
|
+
root_certificate_provider_ = std::move(new_root_provider);
|
493
|
+
}
|
494
|
+
RefCountedPtr<XdsCertificateProvider> new_identity_provider;
|
495
|
+
if (!identity_provider_instance_name.empty()) {
|
496
|
+
new_identity_provider =
|
497
|
+
xds_client_->certificate_provider_store()
|
498
|
+
.CreateOrGetCertificateProvider(identity_provider_instance_name);
|
499
|
+
if (new_identity_provider == nullptr) {
|
500
|
+
return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
|
501
|
+
absl::StrCat("Certificate provider instance name: \"",
|
502
|
+
identity_provider_instance_name, "\" not recognized.")
|
503
|
+
.c_str());
|
504
|
+
}
|
505
|
+
}
|
506
|
+
if (identity_certificate_provider_ != new_identity_provider) {
|
507
|
+
if (identity_certificate_provider_ != nullptr &&
|
508
|
+
identity_certificate_provider_->interested_parties() != nullptr) {
|
509
|
+
grpc_pollset_set_del_pollset_set(
|
510
|
+
interested_parties(),
|
511
|
+
identity_certificate_provider_->interested_parties());
|
512
|
+
}
|
513
|
+
if (new_identity_provider != nullptr &&
|
514
|
+
new_identity_provider->interested_parties() != nullptr) {
|
515
|
+
grpc_pollset_set_add_pollset_set(
|
516
|
+
interested_parties(), new_identity_provider->interested_parties());
|
517
|
+
}
|
518
|
+
identity_certificate_provider_ = std::move(new_identity_provider);
|
519
|
+
}
|
520
|
+
const std::vector<XdsApi::StringMatcher>& match_subject_alt_names =
|
521
|
+
cluster_data.common_tls_context.combined_validation_context
|
522
|
+
.default_validation_context.match_subject_alt_names;
|
523
|
+
if (!root_provider_instance_name.empty() &&
|
524
|
+
!identity_provider_instance_name.empty()) {
|
525
|
+
// Using mTLS configuration
|
526
|
+
if (xds_certificate_provider_ != nullptr &&
|
527
|
+
xds_certificate_provider_->ProvidesRootCerts() &&
|
528
|
+
xds_certificate_provider_->ProvidesIdentityCerts()) {
|
529
|
+
xds_certificate_provider_->UpdateRootCertNameAndDistributor(
|
530
|
+
root_provider_cert_name, root_certificate_provider_->distributor());
|
531
|
+
xds_certificate_provider_->UpdateIdentityCertNameAndDistributor(
|
532
|
+
identity_provider_cert_name,
|
533
|
+
identity_certificate_provider_->distributor());
|
534
|
+
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
|
535
|
+
match_subject_alt_names);
|
536
|
+
} else {
|
537
|
+
// Existing xDS certificate provider does not have mTLS configuration.
|
538
|
+
// Create new certificate provider so that new subchannel connectors are
|
539
|
+
// created.
|
540
|
+
xds_certificate_provider_ = MakeRefCounted<XdsCertificateProvider>(
|
541
|
+
root_provider_cert_name, root_certificate_provider_->distributor(),
|
542
|
+
identity_provider_cert_name,
|
543
|
+
identity_certificate_provider_->distributor(),
|
544
|
+
match_subject_alt_names);
|
545
|
+
}
|
546
|
+
} else if (!root_provider_instance_name.empty()) {
|
547
|
+
// Using TLS configuration
|
548
|
+
if (xds_certificate_provider_ != nullptr &&
|
549
|
+
xds_certificate_provider_->ProvidesRootCerts() &&
|
550
|
+
!xds_certificate_provider_->ProvidesIdentityCerts()) {
|
551
|
+
xds_certificate_provider_->UpdateRootCertNameAndDistributor(
|
552
|
+
root_provider_cert_name, root_certificate_provider_->distributor());
|
553
|
+
xds_certificate_provider_->UpdateSubjectAlternativeNameMatchers(
|
554
|
+
match_subject_alt_names);
|
555
|
+
} else {
|
556
|
+
// Existing xDS certificate provider does not have TLS configuration.
|
557
|
+
// Create new certificate provider so that new subchannel connectors are
|
558
|
+
// created.
|
559
|
+
xds_certificate_provider_ = MakeRefCounted<XdsCertificateProvider>(
|
560
|
+
root_provider_cert_name, root_certificate_provider_->distributor(),
|
561
|
+
"", nullptr, match_subject_alt_names);
|
562
|
+
}
|
563
|
+
} else {
|
564
|
+
// No configuration provided.
|
565
|
+
xds_certificate_provider_ = nullptr;
|
566
|
+
}
|
567
|
+
return GRPC_ERROR_NONE;
|
568
|
+
}
|
569
|
+
|
428
570
|
//
|
429
571
|
// factory
|
430
572
|
//
|