grpc 1.32.0 → 1.33.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 +175 -376
- data/include/grpc/grpc.h +0 -5
- data/include/grpc/grpc_security.h +16 -0
- data/include/grpc/impl/codegen/grpc_types.h +0 -5
- data/src/core/ext/filters/client_channel/client_channel.cc +204 -170
- data/src/core/ext/filters/client_channel/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +34 -5
- data/src/core/ext/filters/client_channel/lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +106 -106
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -32
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +198 -126
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +439 -249
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +571 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +727 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +553 -358
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -39
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -2
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +44 -43
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -9
- data/src/core/ext/filters/client_channel/server_address.cc +80 -0
- data/src/core/ext/filters/client_channel/server_address.h +25 -36
- data/src/core/ext/filters/client_channel/service_config.cc +16 -13
- data/src/core/ext/filters/client_channel/service_config.h +7 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
- data/src/core/ext/filters/client_channel/subchannel_interface.h +44 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +2 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +17 -10
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +10 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +5 -0
- data/src/core/ext/transport/chttp2/transport/parsing.cc +16 -2
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +29 -9
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +66 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +123 -45
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +310 -53
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +45 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +16 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +38 -15
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +54 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +123 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +40 -16
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +114 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +36 -16
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +86 -20
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -6
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +54 -5
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +10 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +28 -11
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +184 -57
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +504 -69
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +6 -5
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +78 -26
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +236 -25
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +8 -9
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +19 -33
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +16 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +65 -23
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +229 -47
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +20 -10
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +67 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +6 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -0
- data/src/core/ext/xds/certificate_provider_factory.h +59 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.h +50 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +377 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +102 -0
- data/src/core/ext/xds/xds_api.cc +301 -93
- data/src/core/ext/xds/xds_api.h +129 -92
- data/src/core/ext/xds/xds_channel_args.h +6 -3
- data/src/core/ext/xds/xds_client.cc +498 -410
- data/src/core/ext/xds/xds_client.h +105 -51
- data/src/core/ext/xds/xds_client_stats.cc +18 -12
- data/src/core/ext/xds/xds_client_stats.h +33 -5
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channelz.cc +10 -45
- data/src/core/lib/channel/channelz.h +11 -19
- data/src/core/lib/channel/channelz_registry.cc +12 -11
- data/src/core/lib/channel/channelz_registry.h +3 -0
- data/src/core/lib/gpr/time_precise.cc +2 -0
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gprpp/dual_ref_counted.h +336 -0
- data/src/core/lib/gprpp/ref_counted.h +51 -22
- data/src/core/lib/gprpp/ref_counted_ptr.h +153 -0
- data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -5
- data/src/core/lib/iomgr/exec_ctx.h +10 -8
- data/src/core/lib/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +37 -0
- data/src/core/lib/security/certificate_provider.h +60 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +321 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +214 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +6 -10
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -0
- data/src/core/lib/surface/channel.cc +9 -31
- data/src/core/lib/surface/channel.h +6 -1
- data/src/core/lib/surface/init.cc +26 -9
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +2 -1
- data/src/core/lib/transport/connectivity_state.h +2 -2
- data/src/core/lib/transport/metadata.cc +11 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +35 -20
- data/src/core/tsi/ssl_transport_security.cc +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -3
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/err_data.c +465 -463
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +98 -11
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +51 -6
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +44 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +221 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +64 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +9 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +188 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -43
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +9 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +4 -8
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +2 -2
- metadata +72 -42
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -537
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1141
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
- data/src/core/ext/xds/xds_channel.h +0 -46
- data/src/core/ext/xds/xds_channel_secure.cc +0 -103
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -0,0 +1,45 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2020 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#include <grpc/support/port_platform.h>
|
20
|
+
|
21
|
+
#include "src/core/lib/security/credentials/xds/xds_credentials.h"
|
22
|
+
|
23
|
+
namespace grpc_core {
|
24
|
+
|
25
|
+
constexpr const char XdsCredentials::kCredentialsTypeXds[];
|
26
|
+
|
27
|
+
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
28
|
+
XdsCredentials::create_security_connector(
|
29
|
+
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
30
|
+
const char* target_name, const grpc_channel_args* args,
|
31
|
+
grpc_channel_args** new_args) {
|
32
|
+
/* TODO(yashkt) : To be filled */
|
33
|
+
if (fallback_credentials_ != nullptr) {
|
34
|
+
return fallback_credentials_->create_security_connector(
|
35
|
+
std::move(call_creds), target_name, args, new_args);
|
36
|
+
}
|
37
|
+
return nullptr;
|
38
|
+
}
|
39
|
+
|
40
|
+
} // namespace grpc_core
|
41
|
+
|
42
|
+
grpc_channel_credentials* grpc_xds_credentials_create(
|
43
|
+
grpc_channel_credentials* fallback_credentials) {
|
44
|
+
return new grpc_core::XdsCredentials(fallback_credentials->Ref());
|
45
|
+
}
|
@@ -0,0 +1,51 @@
|
|
1
|
+
//
|
2
|
+
//
|
3
|
+
// Copyright 2020 gRPC authors.
|
4
|
+
//
|
5
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
// you may not use this file except in compliance with the License.
|
7
|
+
// You may obtain a copy of the License at
|
8
|
+
//
|
9
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
//
|
11
|
+
// Unless required by applicable law or agreed to in writing, software
|
12
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
// See the License for the specific language governing permissions and
|
15
|
+
// limitations under the License.
|
16
|
+
//
|
17
|
+
//
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_XDS_XDS_CREDENTIALS_H
|
20
|
+
#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_XDS_XDS_CREDENTIALS_H
|
21
|
+
|
22
|
+
#include <grpc/support/port_platform.h>
|
23
|
+
|
24
|
+
#include <grpc/grpc_security.h>
|
25
|
+
|
26
|
+
#include "src/core/lib/security/credentials/credentials.h"
|
27
|
+
|
28
|
+
namespace grpc_core {
|
29
|
+
|
30
|
+
class XdsCredentials final : public grpc_channel_credentials {
|
31
|
+
public:
|
32
|
+
static constexpr const char kCredentialsTypeXds[] = "Xds";
|
33
|
+
|
34
|
+
explicit XdsCredentials(
|
35
|
+
grpc_core::RefCountedPtr<grpc_channel_credentials> fallback_credentials)
|
36
|
+
: grpc_channel_credentials(kCredentialsTypeXds),
|
37
|
+
fallback_credentials_(std::move(fallback_credentials)) {}
|
38
|
+
|
39
|
+
grpc_core::RefCountedPtr<grpc_channel_security_connector>
|
40
|
+
create_security_connector(
|
41
|
+
grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
|
42
|
+
const char* target_name, const grpc_channel_args* args,
|
43
|
+
grpc_channel_args** new_args) override;
|
44
|
+
|
45
|
+
private:
|
46
|
+
grpc_core::RefCountedPtr<grpc_channel_credentials> fallback_credentials_;
|
47
|
+
};
|
48
|
+
|
49
|
+
} // namespace grpc_core
|
50
|
+
|
51
|
+
#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_XDS_XDS_CREDENTIALS_H */
|
@@ -56,11 +56,9 @@ class grpc_fake_channel_security_connector final
|
|
56
56
|
target_(gpr_strdup(target)),
|
57
57
|
expected_targets_(
|
58
58
|
gpr_strdup(grpc_fake_transport_get_expected_targets(args))),
|
59
|
-
is_lb_channel_(
|
60
|
-
|
61
|
-
|
62
|
-
grpc_channel_args_find(
|
63
|
-
args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER) != nullptr) {
|
59
|
+
is_lb_channel_(grpc_channel_args_find(
|
60
|
+
args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER) !=
|
61
|
+
nullptr) {
|
64
62
|
const grpc_arg* target_name_override_arg =
|
65
63
|
grpc_channel_args_find(args, GRPC_SSL_TARGET_NAME_OVERRIDE_ARG);
|
66
64
|
if (target_name_override_arg != nullptr) {
|
@@ -147,9 +145,7 @@ class grpc_fake_channel_security_connector final
|
|
147
145
|
char* target_name_override() const { return target_name_override_; }
|
148
146
|
|
149
147
|
private:
|
150
|
-
bool fake_check_target(const char*
|
151
|
-
const char* set_str) const {
|
152
|
-
GPR_ASSERT(target_type != nullptr);
|
148
|
+
bool fake_check_target(const char* target, const char* set_str) const {
|
153
149
|
GPR_ASSERT(target != nullptr);
|
154
150
|
char** set = nullptr;
|
155
151
|
size_t set_size = 0;
|
@@ -185,14 +181,14 @@ class grpc_fake_channel_security_connector final
|
|
185
181
|
expected_targets_);
|
186
182
|
goto done;
|
187
183
|
}
|
188
|
-
if (!fake_check_target(
|
184
|
+
if (!fake_check_target(target_, lbs_and_backends[1])) {
|
189
185
|
gpr_log(GPR_ERROR, "LB target '%s' not found in expected set '%s'",
|
190
186
|
target_, lbs_and_backends[1]);
|
191
187
|
goto done;
|
192
188
|
}
|
193
189
|
success = true;
|
194
190
|
} else {
|
195
|
-
if (!fake_check_target(
|
191
|
+
if (!fake_check_target(target_, lbs_and_backends[0])) {
|
196
192
|
gpr_log(GPR_ERROR, "Backend target '%s' not found in expected set '%s'",
|
197
193
|
target_, lbs_and_backends[0]);
|
198
194
|
goto done;
|
@@ -174,6 +174,11 @@ class PemKeyCertPair {
|
|
174
174
|
return *this;
|
175
175
|
}
|
176
176
|
|
177
|
+
bool operator==(const PemKeyCertPair& other) const {
|
178
|
+
return std::strcmp(this->private_key(), other.private_key()) == 0 &&
|
179
|
+
std::strcmp(this->cert_chain(), other.cert_chain()) == 0;
|
180
|
+
}
|
181
|
+
|
177
182
|
char* private_key() const { return private_key_.get(); }
|
178
183
|
char* cert_chain() const { return cert_chain_.get(); }
|
179
184
|
|
@@ -183,42 +183,30 @@ void CreateChannelzNode(grpc_channel_stack_builder* builder) {
|
|
183
183
|
const grpc_channel_args* args =
|
184
184
|
grpc_channel_stack_builder_get_channel_arguments(builder);
|
185
185
|
// Check whether channelz is enabled.
|
186
|
-
const bool channelz_enabled =
|
187
|
-
|
188
|
-
GRPC_ENABLE_CHANNELZ_DEFAULT);
|
186
|
+
const bool channelz_enabled = grpc_channel_args_find_bool(
|
187
|
+
args, GRPC_ARG_ENABLE_CHANNELZ, GRPC_ENABLE_CHANNELZ_DEFAULT);
|
189
188
|
if (!channelz_enabled) return;
|
190
189
|
// Get parameters needed to create the channelz node.
|
191
|
-
const size_t channel_tracer_max_memory =
|
192
|
-
|
193
|
-
GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE),
|
190
|
+
const size_t channel_tracer_max_memory = grpc_channel_args_find_integer(
|
191
|
+
args, GRPC_ARG_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE,
|
194
192
|
{GRPC_MAX_CHANNEL_TRACE_EVENT_MEMORY_PER_NODE_DEFAULT, 0, INT_MAX});
|
195
|
-
const
|
196
|
-
|
193
|
+
const bool is_internal_channel = grpc_channel_args_find_bool(
|
194
|
+
args, GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, false);
|
197
195
|
// Create the channelz node.
|
198
196
|
const char* target = grpc_channel_stack_builder_get_target(builder);
|
199
197
|
grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node =
|
200
198
|
grpc_core::MakeRefCounted<grpc_core::channelz::ChannelNode>(
|
201
199
|
target != nullptr ? target : "", channel_tracer_max_memory,
|
202
|
-
|
200
|
+
is_internal_channel);
|
203
201
|
channelz_node->AddTraceEvent(
|
204
202
|
grpc_core::channelz::ChannelTrace::Severity::Info,
|
205
203
|
grpc_slice_from_static_string("Channel created"));
|
206
|
-
// Update parent channel node, if any.
|
207
|
-
if (channelz_parent_uuid > 0) {
|
208
|
-
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> parent_node =
|
209
|
-
grpc_core::channelz::ChannelzRegistry::Get(channelz_parent_uuid);
|
210
|
-
if (parent_node != nullptr) {
|
211
|
-
grpc_core::channelz::ChannelNode* parent =
|
212
|
-
static_cast<grpc_core::channelz::ChannelNode*>(parent_node.get());
|
213
|
-
parent->AddChildChannel(channelz_node->uuid());
|
214
|
-
}
|
215
|
-
}
|
216
204
|
// Add channelz node to channel args.
|
217
|
-
// We remove the arg
|
205
|
+
// We remove the is_internal_channel arg, since we no longer need it.
|
218
206
|
grpc_arg new_arg = grpc_channel_arg_pointer_create(
|
219
207
|
const_cast<char*>(GRPC_ARG_CHANNELZ_CHANNEL_NODE), channelz_node.get(),
|
220
208
|
&channelz_node_arg_vtable);
|
221
|
-
const char* args_to_remove[] = {
|
209
|
+
const char* args_to_remove[] = {GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL};
|
222
210
|
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
223
211
|
args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
|
224
212
|
grpc_channel_stack_builder_set_channel_arguments(builder, new_args);
|
@@ -506,16 +494,6 @@ grpc_call* grpc_channel_create_registered_call(
|
|
506
494
|
static void destroy_channel(void* arg, grpc_error* /*error*/) {
|
507
495
|
grpc_channel* channel = static_cast<grpc_channel*>(arg);
|
508
496
|
if (channel->channelz_node != nullptr) {
|
509
|
-
if (channel->channelz_node->parent_uuid() > 0) {
|
510
|
-
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> parent_node =
|
511
|
-
grpc_core::channelz::ChannelzRegistry::Get(
|
512
|
-
channel->channelz_node->parent_uuid());
|
513
|
-
if (parent_node != nullptr) {
|
514
|
-
grpc_core::channelz::ChannelNode* parent =
|
515
|
-
static_cast<grpc_core::channelz::ChannelNode*>(parent_node.get());
|
516
|
-
parent->RemoveChildChannel(channel->channelz_node->uuid());
|
517
|
-
}
|
518
|
-
}
|
519
497
|
channel->channelz_node->AddTraceEvent(
|
520
498
|
grpc_core::channelz::ChannelTrace::Severity::Info,
|
521
499
|
grpc_slice_from_static_string("Channel destroyed"));
|
@@ -161,8 +161,13 @@ inline void grpc_channel_internal_unref(grpc_channel* channel) {
|
|
161
161
|
grpc_channel_internal_unref(channel)
|
162
162
|
#endif
|
163
163
|
|
164
|
-
|
164
|
+
// Return the channel's compression options.
|
165
165
|
grpc_compression_options grpc_channel_compression_options(
|
166
166
|
const grpc_channel* channel);
|
167
167
|
|
168
|
+
// Ping the channels peer (load balanced channels will select one sub-channel to
|
169
|
+
// ping); if the channel is not connected, posts a failed.
|
170
|
+
void grpc_channel_ping(grpc_channel* channel, grpc_completion_queue* cq,
|
171
|
+
void* tag, void* reserved);
|
172
|
+
|
168
173
|
#endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_H */
|
@@ -18,6 +18,8 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
+
#include "src/core/lib/surface/init.h"
|
22
|
+
|
21
23
|
#include <limits.h>
|
22
24
|
#include <memory.h>
|
23
25
|
|
@@ -26,6 +28,7 @@
|
|
26
28
|
#include <grpc/support/alloc.h>
|
27
29
|
#include <grpc/support/log.h>
|
28
30
|
#include <grpc/support/time.h>
|
31
|
+
|
29
32
|
#include "src/core/lib/channel/channel_stack.h"
|
30
33
|
#include "src/core/lib/channel/channelz_registry.h"
|
31
34
|
#include "src/core/lib/channel/connected_channel.h"
|
@@ -37,6 +40,7 @@
|
|
37
40
|
#include "src/core/lib/http/parser.h"
|
38
41
|
#include "src/core/lib/iomgr/call_combiner.h"
|
39
42
|
#include "src/core/lib/iomgr/combiner.h"
|
43
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
40
44
|
#include "src/core/lib/iomgr/executor.h"
|
41
45
|
#include "src/core/lib/iomgr/iomgr.h"
|
42
46
|
#include "src/core/lib/iomgr/resource_quota.h"
|
@@ -47,7 +51,6 @@
|
|
47
51
|
#include "src/core/lib/surface/call.h"
|
48
52
|
#include "src/core/lib/surface/channel_init.h"
|
49
53
|
#include "src/core/lib/surface/completion_queue.h"
|
50
|
-
#include "src/core/lib/surface/init.h"
|
51
54
|
#include "src/core/lib/surface/lame_client.h"
|
52
55
|
#include "src/core/lib/surface/server.h"
|
53
56
|
#include "src/core/lib/transport/bdp_estimator.h"
|
@@ -211,15 +214,29 @@ void grpc_shutdown_internal(void* /*ignored*/) {
|
|
211
214
|
void grpc_shutdown(void) {
|
212
215
|
GRPC_API_TRACE("grpc_shutdown(void)", 0, ());
|
213
216
|
grpc_core::MutexLock lock(&g_init_mu);
|
217
|
+
|
214
218
|
if (--g_initializations == 0) {
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
219
|
+
grpc_core::ApplicationCallbackExecCtx* acec =
|
220
|
+
grpc_core::ApplicationCallbackExecCtx::Get();
|
221
|
+
if (!grpc_iomgr_is_any_background_poller_thread() &&
|
222
|
+
(acec == nullptr ||
|
223
|
+
(acec->Flags() & GRPC_APP_CALLBACK_EXEC_CTX_FLAG_IS_INTERNAL_THREAD) ==
|
224
|
+
0)) {
|
225
|
+
// just run clean-up when this is called on non-executor thread.
|
226
|
+
gpr_log(GPR_DEBUG, "grpc_shutdown starts clean-up now");
|
227
|
+
g_shutting_down = true;
|
228
|
+
grpc_shutdown_internal_locked();
|
229
|
+
} else {
|
230
|
+
// spawn a detached thread to do the actual clean up in case we are
|
231
|
+
// currently in an executor thread.
|
232
|
+
gpr_log(GPR_DEBUG, "grpc_shutdown spawns clean-up thread");
|
233
|
+
g_initializations++;
|
234
|
+
g_shutting_down = true;
|
235
|
+
grpc_core::Thread cleanup_thread(
|
236
|
+
"grpc_shutdown", grpc_shutdown_internal, nullptr, nullptr,
|
237
|
+
grpc_core::Thread::Options().set_joinable(false).set_tracked(false));
|
238
|
+
cleanup_thread.Start();
|
239
|
+
}
|
223
240
|
}
|
224
241
|
}
|
225
242
|
|
@@ -23,6 +23,6 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
-
const char* grpc_version_string(void) { return "
|
26
|
+
const char* grpc_version_string(void) { return "13.0.0"; }
|
27
27
|
|
28
|
-
const char* grpc_g_stands_for(void) { return "
|
28
|
+
const char* grpc_g_stands_for(void) { return "geeky"; }
|
@@ -68,13 +68,14 @@ class BdpEstimator {
|
|
68
68
|
}
|
69
69
|
GPR_ASSERT(ping_state_ == PingState::SCHEDULED);
|
70
70
|
ping_state_ = PingState::STARTED;
|
71
|
-
accumulator_ = 0;
|
72
71
|
ping_start_time_ = gpr_now(GPR_CLOCK_MONOTONIC);
|
73
72
|
}
|
74
73
|
|
75
74
|
// Completes a previously started ping, returns when to schedule the next one
|
76
75
|
grpc_millis CompletePing();
|
77
76
|
|
77
|
+
int64_t accumulator() { return accumulator_; }
|
78
|
+
|
78
79
|
private:
|
79
80
|
enum class PingState { UNSCHEDULED, SCHEDULED, STARTED };
|
80
81
|
|
@@ -73,8 +73,8 @@ class AsyncConnectivityStateWatcherInterface
|
|
73
73
|
protected:
|
74
74
|
class Notifier;
|
75
75
|
|
76
|
-
// If \a
|
77
|
-
// ExecCtx.
|
76
|
+
// If \a work_serializer is nullptr, then the notification will be scheduled
|
77
|
+
// on the ExecCtx.
|
78
78
|
explicit AsyncConnectivityStateWatcherInterface(
|
79
79
|
std::shared_ptr<WorkSerializer> work_serializer = nullptr)
|
80
80
|
: work_serializer_(std::move(work_serializer)) {}
|
@@ -250,8 +250,18 @@ void grpc_mdctx_global_shutdown() {
|
|
250
250
|
gpr_mu_destroy(&shard->mu);
|
251
251
|
gc_mdtab(shard);
|
252
252
|
if (shard->count != 0) {
|
253
|
-
gpr_log(
|
253
|
+
gpr_log(GPR_ERROR, "WARNING: %" PRIuPTR " metadata elements were leaked",
|
254
254
|
shard->count);
|
255
|
+
for (int i = 0; i < shard->capacity; i++) {
|
256
|
+
for (InternedMetadata* md = shard->elems[i].next; md;
|
257
|
+
md = md->bucket_next()) {
|
258
|
+
char* key_str = grpc_slice_to_c_string(md->key());
|
259
|
+
char* value_str = grpc_slice_to_c_string(md->value());
|
260
|
+
gpr_log(GPR_ERROR, "mdelem '%s' = '%s'", key_str, value_str);
|
261
|
+
gpr_free(key_str);
|
262
|
+
gpr_free(value_str);
|
263
|
+
}
|
264
|
+
}
|
255
265
|
if (grpc_iomgr_abort_on_leaks()) {
|
256
266
|
abort();
|
257
267
|
}
|
@@ -34,18 +34,10 @@ void grpc_resolver_fake_init(void);
|
|
34
34
|
void grpc_resolver_fake_shutdown(void);
|
35
35
|
void grpc_lb_policy_grpclb_init(void);
|
36
36
|
void grpc_lb_policy_grpclb_shutdown(void);
|
37
|
-
void grpc_lb_policy_cds_init(void);
|
38
|
-
void grpc_lb_policy_cds_shutdown(void);
|
39
|
-
void grpc_lb_policy_eds_init(void);
|
40
|
-
void grpc_lb_policy_eds_shutdown(void);
|
41
|
-
void grpc_lb_policy_lrs_init(void);
|
42
|
-
void grpc_lb_policy_lrs_shutdown(void);
|
43
37
|
void grpc_lb_policy_priority_init(void);
|
44
38
|
void grpc_lb_policy_priority_shutdown(void);
|
45
39
|
void grpc_lb_policy_weighted_target_init(void);
|
46
40
|
void grpc_lb_policy_weighted_target_shutdown(void);
|
47
|
-
void grpc_lb_policy_xds_routing_init(void);
|
48
|
-
void grpc_lb_policy_xds_routing_shutdown(void);
|
49
41
|
void grpc_lb_policy_pick_first_init(void);
|
50
42
|
void grpc_lb_policy_pick_first_shutdown(void);
|
51
43
|
void grpc_lb_policy_round_robin_init(void);
|
@@ -56,8 +48,6 @@ void grpc_resolver_dns_native_init(void);
|
|
56
48
|
void grpc_resolver_dns_native_shutdown(void);
|
57
49
|
void grpc_resolver_sockaddr_init(void);
|
58
50
|
void grpc_resolver_sockaddr_shutdown(void);
|
59
|
-
void grpc_resolver_xds_init(void);
|
60
|
-
void grpc_resolver_xds_shutdown(void);
|
61
51
|
void grpc_client_idle_filter_init(void);
|
62
52
|
void grpc_client_idle_filter_shutdown(void);
|
63
53
|
void grpc_max_age_filter_init(void);
|
@@ -71,6 +61,25 @@ void grpc_client_authority_filter_shutdown(void);
|
|
71
61
|
void grpc_workaround_cronet_compression_filter_init(void);
|
72
62
|
void grpc_workaround_cronet_compression_filter_shutdown(void);
|
73
63
|
|
64
|
+
#ifndef GRPC_NO_XDS
|
65
|
+
namespace grpc_core {
|
66
|
+
void XdsClientGlobalInit();
|
67
|
+
void XdsClientGlobalShutdown();
|
68
|
+
} // namespace grpc_core
|
69
|
+
void grpc_certificate_provider_registry_init(void);
|
70
|
+
void grpc_certificate_provider_registry_shutdown(void);
|
71
|
+
void grpc_lb_policy_cds_init(void);
|
72
|
+
void grpc_lb_policy_cds_shutdown(void);
|
73
|
+
void grpc_lb_policy_eds_init(void);
|
74
|
+
void grpc_lb_policy_eds_shutdown(void);
|
75
|
+
void grpc_lb_policy_eds_drop_init(void);
|
76
|
+
void grpc_lb_policy_eds_drop_shutdown(void);
|
77
|
+
void grpc_lb_policy_xds_cluster_manager_init(void);
|
78
|
+
void grpc_lb_policy_xds_cluster_manager_shutdown(void);
|
79
|
+
void grpc_resolver_xds_init(void);
|
80
|
+
void grpc_resolver_xds_shutdown(void);
|
81
|
+
#endif
|
82
|
+
|
74
83
|
void grpc_register_built_in_plugins(void) {
|
75
84
|
grpc_register_plugin(grpc_http_filters_init,
|
76
85
|
grpc_http_filters_shutdown);
|
@@ -86,18 +95,10 @@ void grpc_register_built_in_plugins(void) {
|
|
86
95
|
grpc_resolver_fake_shutdown);
|
87
96
|
grpc_register_plugin(grpc_lb_policy_grpclb_init,
|
88
97
|
grpc_lb_policy_grpclb_shutdown);
|
89
|
-
grpc_register_plugin(grpc_lb_policy_cds_init,
|
90
|
-
grpc_lb_policy_cds_shutdown);
|
91
|
-
grpc_register_plugin(grpc_lb_policy_eds_init,
|
92
|
-
grpc_lb_policy_eds_shutdown);
|
93
|
-
grpc_register_plugin(grpc_lb_policy_lrs_init,
|
94
|
-
grpc_lb_policy_lrs_shutdown);
|
95
98
|
grpc_register_plugin(grpc_lb_policy_priority_init,
|
96
99
|
grpc_lb_policy_priority_shutdown);
|
97
100
|
grpc_register_plugin(grpc_lb_policy_weighted_target_init,
|
98
101
|
grpc_lb_policy_weighted_target_shutdown);
|
99
|
-
grpc_register_plugin(grpc_lb_policy_xds_routing_init,
|
100
|
-
grpc_lb_policy_xds_routing_shutdown);
|
101
102
|
grpc_register_plugin(grpc_lb_policy_pick_first_init,
|
102
103
|
grpc_lb_policy_pick_first_shutdown);
|
103
104
|
grpc_register_plugin(grpc_lb_policy_round_robin_init,
|
@@ -108,8 +109,6 @@ void grpc_register_built_in_plugins(void) {
|
|
108
109
|
grpc_resolver_dns_native_shutdown);
|
109
110
|
grpc_register_plugin(grpc_resolver_sockaddr_init,
|
110
111
|
grpc_resolver_sockaddr_shutdown);
|
111
|
-
grpc_register_plugin(grpc_resolver_xds_init,
|
112
|
-
grpc_resolver_xds_shutdown);
|
113
112
|
grpc_register_plugin(grpc_client_idle_filter_init,
|
114
113
|
grpc_client_idle_filter_shutdown);
|
115
114
|
grpc_register_plugin(grpc_max_age_filter_init,
|
@@ -122,4 +121,20 @@ void grpc_register_built_in_plugins(void) {
|
|
122
121
|
grpc_client_authority_filter_shutdown);
|
123
122
|
grpc_register_plugin(grpc_workaround_cronet_compression_filter_init,
|
124
123
|
grpc_workaround_cronet_compression_filter_shutdown);
|
124
|
+
#ifndef GRPC_NO_XDS
|
125
|
+
grpc_register_plugin(grpc_core::XdsClientGlobalInit,
|
126
|
+
grpc_core::XdsClientGlobalShutdown);
|
127
|
+
grpc_register_plugin(grpc_certificate_provider_registry_init,
|
128
|
+
grpc_certificate_provider_registry_shutdown);
|
129
|
+
grpc_register_plugin(grpc_lb_policy_cds_init,
|
130
|
+
grpc_lb_policy_cds_shutdown);
|
131
|
+
grpc_register_plugin(grpc_lb_policy_eds_init,
|
132
|
+
grpc_lb_policy_eds_shutdown);
|
133
|
+
grpc_register_plugin(grpc_lb_policy_eds_drop_init,
|
134
|
+
grpc_lb_policy_eds_drop_shutdown);
|
135
|
+
grpc_register_plugin(grpc_lb_policy_xds_cluster_manager_init,
|
136
|
+
grpc_lb_policy_xds_cluster_manager_shutdown);
|
137
|
+
grpc_register_plugin(grpc_resolver_xds_init,
|
138
|
+
grpc_resolver_xds_shutdown);
|
139
|
+
#endif
|
125
140
|
}
|