diff --git a/BUILD b/BUILD index 9dc049fd288..1f1d9affc34 100644 --- a/BUILD +++ b/BUILD @@ -200,8 +200,6 @@ GRPCXX_PUBLIC_HDRS = [ "include/grpc++/impl/server_builder_plugin.h", "include/grpc++/impl/server_initializer.h", "include/grpc++/impl/service_type.h", - "include/grpc++/impl/sync_cxx11.h", - "include/grpc++/impl/sync_no_cxx11.h", "include/grpc++/security/auth_context.h", "include/grpc++/resource_quota.h", "include/grpc++/security/auth_metadata_processor.h", @@ -256,8 +254,6 @@ GRPCXX_PUBLIC_HDRS = [ "include/grpcpp/impl/server_initializer.h", "include/grpcpp/impl/server_initializer_impl.h", "include/grpcpp/impl/service_type.h", - "include/grpcpp/impl/sync_cxx11.h", - "include/grpcpp/impl/sync_no_cxx11.h", "include/grpcpp/resource_quota.h", "include/grpcpp/resource_quota_impl.h", "include/grpcpp/security/auth_context.h", @@ -750,6 +746,7 @@ grpc_cc_library( "src/core/lib/iomgr/iomgr_internal.cc", "src/core/lib/iomgr/iomgr_posix.cc", "src/core/lib/iomgr/iomgr_posix_cfstream.cc", + "src/core/lib/iomgr/iomgr_uv.cc", "src/core/lib/iomgr/iomgr_windows.cc", "src/core/lib/iomgr/is_epollexclusive_available.cc", "src/core/lib/iomgr/load_file.cc", @@ -773,6 +770,7 @@ grpc_cc_library( "src/core/lib/iomgr/socket_utils_common_posix.cc", "src/core/lib/iomgr/socket_utils_linux.cc", "src/core/lib/iomgr/socket_utils_posix.cc", + "src/core/lib/iomgr/socket_utils_uv.cc", "src/core/lib/iomgr/socket_utils_windows.cc", "src/core/lib/iomgr/socket_windows.cc", "src/core/lib/iomgr/tcp_client.cc", @@ -992,6 +990,7 @@ grpc_cc_library( public_hdrs = GRPC_PUBLIC_HDRS, use_cfstream = True, deps = [ + "eventmanager_libuv", "gpr_base", "grpc_codegen", "grpc_trace", diff --git a/BUILDING.md b/BUILDING.md index 9addae90fc7..a113700729a 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -72,13 +72,13 @@ To prepare for cmake + Microsoft Visual C++ compiler build # Clone the repository (including submodules) Before building, you need to clone the gRPC github repository and download submodules containing source code -for gRPC's dependencies (that's done by the `submodule` command or `--recursive` flag). The following commands will clone the gRPC -repository at the latest stable version. +for gRPC's dependencies (that's done by the `submodule` command or `--recursive` flag). Use following commands +to clone the gRPC repository at the [latest stable release tag](https://github.com/grpc/grpc/releases) ## Unix ```sh - $ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc + $ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $ cd grpc $ git submodule update --init ``` @@ -86,10 +86,9 @@ repository at the latest stable version. ## Windows ``` -> @rem You can also do just "git clone --recursive -b THE_BRANCH_YOU_WANT https://github.com/grpc/grpc" -> powershell git clone --recursive -b ((New-Object System.Net.WebClient).DownloadString(\"https://grpc.io/release\").Trim()) https://github.com/grpc/grpc +> git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc > cd grpc -> @rem To update submodules at later time, run "git submodule update --init" +> git submodule update --init ``` NOTE: The `bazel` build tool uses a different model for dependencies. You only need to worry about downloading submodules if you're building diff --git a/Makefile b/Makefile index 30384b57a98..3750bdf78e7 100644 --- a/Makefile +++ b/Makefile @@ -3944,7 +3944,7 @@ PUBLIC_HEADERS_C += \ LIBGPR_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGPR_SRC)))) -$(LIBDIR)/$(CONFIG)/libgpr.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(LIBGPR_OBJS) +$(LIBDIR)/$(CONFIG)/libgpr.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBGPR_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgpr.a @@ -5479,7 +5479,7 @@ PUBLIC_HEADERS_C += \ LIBGRPC_TEST_UTIL_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_TEST_UTIL_UNSECURE_SRC)))) -$(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(LIBGRPC_TEST_UTIL_UNSECURE_OBJS) +$(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBGRPC_TEST_UTIL_UNSECURE_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_test_util_unsecure.a @@ -5846,7 +5846,7 @@ PUBLIC_HEADERS_C += \ LIBGRPC_UNSECURE_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_UNSECURE_SRC)))) -$(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(LIBGRPC_UNSECURE_OBJS) $(LIBGPR_OBJS) $(LIBGRPC_ABSEIL_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(ADDRESS_SORTING_MERGE_OBJS) $(UPB_MERGE_OBJS) +$(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBGRPC_UNSECURE_OBJS) $(LIBGPR_OBJS) $(LIBGRPC_ABSEIL_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(ADDRESS_SORTING_MERGE_OBJS) $(UPB_MERGE_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.a @@ -7493,7 +7493,7 @@ $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION_CPP).$(SHARE else -$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_UNSECURE_OBJS) $(LIBGPR_OBJS) $(LIBGRPC_ABSEIL_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(ADDRESS_SORTING_MERGE_OBJS) $(UPB_MERGE_OBJS) +$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_UNSECURE_OBJS) $(LIBGPR_OBJS) $(LIBGRPC_ABSEIL_OBJS) $(ZLIB_MERGE_OBJS) $(CARES_MERGE_OBJS) $(ADDRESS_SORTING_MERGE_OBJS) $(UPB_MERGE_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a @@ -7665,7 +7665,7 @@ $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a: protobuf_dep_error else -$(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBGRPC_PLUGIN_SUPPORT_OBJS) +$(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBGRPC_PLUGIN_SUPPORT_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_plugin_support.a @@ -8480,7 +8480,7 @@ $(LIBBORINGSSL_OBJS): CPPFLAGS += -Ithird_party/boringssl-with-bazel/src/include $(LIBBORINGSSL_OBJS): CXXFLAGS += -fno-exceptions $(LIBBORINGSSL_OBJS): CFLAGS += -g -$(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(LIBBORINGSSL_OBJS) +$(LIBDIR)/$(CONFIG)/libboringssl.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBBORINGSSL_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl.a @@ -8520,7 +8520,7 @@ $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a: protobuf_dep_error else -$(LIBDIR)/$(CONFIG)/libboringssl_test_util.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_TEST_UTIL_OBJS) +$(LIBDIR)/$(CONFIG)/libboringssl_test_util.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBBORINGSSL_TEST_UTIL_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a @@ -8575,7 +8575,7 @@ $(LIBDIR)/$(CONFIG)/libbenchmark.a: protobuf_dep_error else -$(LIBDIR)/$(CONFIG)/libbenchmark.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBBENCHMARK_OBJS) +$(LIBDIR)/$(CONFIG)/libbenchmark.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(PROTOBUF_DEP) $(LIBBENCHMARK_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libbenchmark.a @@ -8607,18 +8607,7 @@ PUBLIC_HEADERS_C += \ LIBUPB_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBUPB_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure libraries if you don't have OpenSSL. - -$(LIBDIR)/$(CONFIG)/libupb.a: openssl_dep_error - -$(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): openssl_dep_error - -else - - -$(LIBDIR)/$(CONFIG)/libupb.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBUPB_OBJS) +$(LIBDIR)/$(CONFIG)/libupb.a: $(LIBUPB_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libupb.a @@ -8630,12 +8619,12 @@ endif ifeq ($(SYSTEM),MINGW32) -$(LIBDIR)/$(CONFIG)/upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBUPB_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(OPENSSL_DEP) +$(LIBDIR)/$(CONFIG)/upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBUPB_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,--output-def=$(LIBDIR)/$(CONFIG)/upb$(SHARED_VERSION_CORE).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE)-dll.a -o $(LIBDIR)/$(CONFIG)/upb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBUPB_OBJS) $(ZLIB_MERGE_LIBS) $(CARES_MERGE_LIBS) $(ADDRESS_SORTING_MERGE_LIBS) $(UPB_MERGE_LIBS) $(GRPC_ABSEIL_MERGE_LIBS) $(LDLIBS) else -$(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBUPB_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(OPENSSL_DEP) +$(LIBDIR)/$(CONFIG)/libupb$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBUPB_OBJS) $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(E) "[LD] Linking $@" $(Q) mkdir -p `dirname $@` ifeq ($(SYSTEM),Darwin) @@ -8647,13 +8636,9 @@ else endif endif -endif - -ifneq ($(NO_SECURE),true) ifneq ($(NO_DEPS),true) -include $(LIBUPB_OBJS:.o=.dep) endif -endif LIBZ_SRC = \ @@ -9064,7 +9049,7 @@ PUBLIC_HEADERS_C += \ LIBEND2END_NOSEC_TESTS_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBEND2END_NOSEC_TESTS_SRC)))) -$(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(LIBGRPC_ABSEIL_DEP) $(LIBEND2END_NOSEC_TESTS_OBJS) +$(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a: $(ZLIB_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBEND2END_NOSEC_TESTS_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libend2end_nosec_tests.a @@ -9118,17 +9103,7 @@ LIBGRPC_ABSEIL_SRC = \ LIBGRPC_ABSEIL_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC_ABSEIL_SRC)))) -ifeq ($(NO_SECURE),true) - -# You can't build secure libraries if you don't have OpenSSL. - -$(LIBDIR)/$(CONFIG)/libgrpc_abseil.a: openssl_dep_error - - -else - - -$(LIBDIR)/$(CONFIG)/libgrpc_abseil.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(CARES_DEP) $(ADDRESS_SORTING_DEP) $(UPB_DEP) $(GRPC_ABSEIL_DEP) $(LIBGRPC_ABSEIL_OBJS) +$(LIBDIR)/$(CONFIG)/libgrpc_abseil.a: $(LIBGRPC_ABSEIL_OBJS) $(E) "[AR] Creating $@" $(Q) mkdir -p `dirname $@` $(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc_abseil.a @@ -9140,13 +9115,9 @@ endif -endif - -ifneq ($(NO_SECURE),true) ifneq ($(NO_DEPS),true) -include $(LIBGRPC_ABSEIL_OBJS:.o=.dep) endif -endif # All of the test targets, and protoc plugins @@ -23548,40 +23519,6 @@ test/cpp/util/string_ref_helper.cc: $(OPENSSL_DEP) test/cpp/util/subprocess.cc: $(OPENSSL_DEP) test/cpp/util/test_config_cc.cc: $(OPENSSL_DEP) test/cpp/util/test_credentials_provider.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/dynamic_annotations.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/cycleclock.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/raw_logging.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/spinlock.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/sysinfo.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/thread_identity.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/throw_delegate.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/base/log_severity.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/numeric/int128.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/ascii.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/charconv.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/escaping.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/internal/escaping.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/internal/memutil.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/internal/ostringstream.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/internal/utf8.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/match.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/numbers.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/str_cat.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/str_replace.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/str_split.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/string_view.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/strings/substitute.cc: $(OPENSSL_DEP) -third_party/abseil-cpp/absl/types/bad_optional_access.cc: $(OPENSSL_DEP) -third_party/upb/upb/decode.c: $(OPENSSL_DEP) -third_party/upb/upb/encode.c: $(OPENSSL_DEP) -third_party/upb/upb/msg.c: $(OPENSSL_DEP) -third_party/upb/upb/port.c: $(OPENSSL_DEP) -third_party/upb/upb/table.c: $(OPENSSL_DEP) -third_party/upb/upb/upb.c: $(OPENSSL_DEP) endif .PHONY: all strip tools dep_error openssl_dep_error openssl_dep_message git_update stop buildtests buildtests_c buildtests_cxx test test_c test_cxx install install_c install_cxx install-headers install-headers_c install-headers_cxx install-shared install-shared_c install-shared_cxx install-static install-static_c install-static_cxx strip strip-shared strip-static strip_c strip-shared_c strip-static_c strip_cxx strip-shared_cxx strip-static_cxx dep_c dep_cxx bins_dep_c bins_dep_cxx clean diff --git a/README.md b/README.md index ad27d0bd3b7..d3eee331088 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Sometimes things go wrong. Please check out the [Troubleshooting guide](TROUBLES # Performance -See the [Performance dashboard](http://performance-dot-grpc-testing.appspot.com/explore?dashboard=5636470266134528) for performance numbers of the latest released version. +See the [Performance dashboard](https://performance-dot-grpc-testing.appspot.com/explore?dashboard=5652536396611584) for performance numbers of master branch daily builds. # Concepts diff --git a/examples/cpp/compression/README.md b/examples/cpp/compression/README.md index 13988f2c0c5..6ba42498ab2 100644 --- a/examples/cpp/compression/README.md +++ b/examples/cpp/compression/README.md @@ -5,11 +5,11 @@ Make sure you have run the [hello world example](../helloworld) or understood th ### Get the tutorial source code -The example code for this and our other examples lives in the `examples` directory. Clone this repository to your local machine by running the following command: +The example code for this and our other examples lives in the `examples` directory. Clone this repository at the [latest stable release tag](https://github.com/grpc/grpc/releases) to your local machine by running the following command: ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc ``` Change your current directory to examples/cpp/compression diff --git a/examples/cpp/helloworld/README.md b/examples/cpp/helloworld/README.md index 584c46ec40d..71718645645 100644 --- a/examples/cpp/helloworld/README.md +++ b/examples/cpp/helloworld/README.md @@ -7,12 +7,12 @@ Make sure you have installed gRPC on your system. Follow the ### Get the tutorial source code The example code for this and our other examples lives in the `examples` -directory. Clone this repository to your local machine by running the -following command: +directory. Clone this repository at the [latest stable release tag](https://github.com/grpc/grpc/releases) +to your local machine by running the following command: ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc ``` Change your current directory to examples/cpp/helloworld diff --git a/examples/cpp/load_balancing/README.md b/examples/cpp/load_balancing/README.md index f48aca5307f..70c6c2a3491 100644 --- a/examples/cpp/load_balancing/README.md +++ b/examples/cpp/load_balancing/README.md @@ -5,11 +5,12 @@ Make sure you have run the [hello world example](../helloworld) or understood th ### Get the tutorial source code -The example code for this and our other examples lives in the `examples` directory. Clone this repository to your local machine by running the following command: +The example code for this and our other examples lives in the `examples` directory. Clone this repository +at the [latest stable release tag](https://github.com/grpc/grpc/releases) to your local machine by running the following command: ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc ``` Change your current directory to examples/cpp/load_balancing diff --git a/examples/cpp/metadata/README.md b/examples/cpp/metadata/README.md index 96ad3d19bdb..334009bdfa7 100644 --- a/examples/cpp/metadata/README.md +++ b/examples/cpp/metadata/README.md @@ -10,9 +10,10 @@ https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md, with the exception of binary headers, which don't have to be base64 encoded. ### Get the tutorial source code - The example code for this and our other examples lives in the `examples` directory. Clone this repository to your local machine by running the following command: + The example code for this and our other examples lives in the `examples` directory. Clone this repository + at the [latest stable release tag](https://github.com/grpc/grpc/releases) to your local machine by running the following command: ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc ``` Change your current directory to examples/cpp/metadata ```sh diff --git a/examples/node/README.md b/examples/node/README.md index f94dcca0f14..0264e9d66b7 100644 --- a/examples/node/README.md +++ b/examples/node/README.md @@ -12,7 +12,7 @@ INSTALL ```sh $ # Get the gRPC repository $ export REPO_ROOT=grpc # REPO root can be any directory of your choice - $ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc $REPO_ROOT + $ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $REPO_ROOT $ cd $REPO_ROOT $ cd examples/node diff --git a/examples/objective-c/helloworld/README.md b/examples/objective-c/helloworld/README.md index 7a7516a3dca..c57e07ca931 100644 --- a/examples/objective-c/helloworld/README.md +++ b/examples/objective-c/helloworld/README.md @@ -18,11 +18,11 @@ Here's how to build and run the Objective-C implementation of the [Hello World]( example used in [Getting started](https://github.com/grpc/grpc/tree/master/examples). The example code for this and our other examples lives in the `examples` directory. Clone -this repository to your local machine by running the following commands: +this repository at the [latest stable release tag](https://github.com/grpc/grpc/releases) to your local machine by running the following commands: ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $ cd grpc $ git submodule update --init ``` diff --git a/examples/php/README.md b/examples/php/README.md index cb0b111e8c4..75b9e6fb829 100644 --- a/examples/php/README.md +++ b/examples/php/README.md @@ -16,7 +16,7 @@ This requires `php` >= 5.5, `pecl`, `composer` - Install the `protoc` compiler plugin `grpc_php_plugin` ```sh - $ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc + $ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $ cd grpc $ make grpc_php_plugin ``` diff --git a/include/grpc++/impl/sync_cxx11.h b/include/grpc++/impl/sync_cxx11.h deleted file mode 100644 index 8bcfb2ce818..00000000000 --- a/include/grpc++/impl/sync_cxx11.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * Copyright 2018 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// DEPRECATED: The headers in include/grpc++ are deprecated. Please include the -// headers in include/grpcpp instead. This header exists only for backwards -// compatibility. - -#ifndef GRPCXX_IMPL_SYNC_CXX11_H -#define GRPCXX_IMPL_SYNC_CXX11_H - -#include - -#endif // GRPCXX_IMPL_SYNC_CXX11_H diff --git a/include/grpc++/impl/sync_no_cxx11.h b/include/grpc++/impl/sync_no_cxx11.h deleted file mode 100644 index 5264567387a..00000000000 --- a/include/grpc++/impl/sync_no_cxx11.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * Copyright 2018 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// DEPRECATED: The headers in include/grpc++ are deprecated. Please include the -// headers in include/grpcpp instead. This header exists only for backwards -// compatibility. - -#ifndef GRPCXX_IMPL_SYNC_NO_CXX11_H -#define GRPCXX_IMPL_SYNC_NO_CXX11_H - -#include - -#endif // GRPCXX_IMPL_SYNC_NO_CXX11_H diff --git a/include/grpcpp/impl/codegen/completion_queue_impl.h b/include/grpcpp/impl/codegen/completion_queue_impl.h index 502edfd9f15..c65b12197dc 100644 --- a/include/grpcpp/impl/codegen/completion_queue_impl.h +++ b/include/grpcpp/impl/codegen/completion_queue_impl.h @@ -387,12 +387,14 @@ class CompletionQueue : private ::grpc::GrpcLibraryCodegen { } void RegisterServer(const Server* server) { + (void)server; #ifndef NDEBUG grpc::internal::MutexLock l(&server_list_mutex_); server_list_.push_back(server); #endif } void UnregisterServer(const Server* server) { + (void)server; #ifndef NDEBUG grpc::internal::MutexLock l(&server_list_mutex_); server_list_.remove(server); diff --git a/include/grpcpp/impl/codegen/time.h b/include/grpcpp/impl/codegen/time.h index b3521722e9e..a08e9cbe189 100644 --- a/include/grpcpp/impl/codegen/time.h +++ b/include/grpcpp/impl/codegen/time.h @@ -39,14 +39,12 @@ namespace grpc { template class TimePoint { public: - TimePoint(const T& /*time*/) { you_need_a_specialization_of_TimePoint(); } - gpr_timespec raw_time() { - gpr_timespec t; - return t; - } - - private: - void you_need_a_specialization_of_TimePoint(); + // If you see the error with methods below, you may need either + // i) using the existing types having a conversion class such as + // gpr_timespec and std::chrono::system_clock::time_point or + // ii) writing a new TimePoint to address your case. + TimePoint(const T& /*time*/) = delete; + gpr_timespec raw_time() = delete; }; template <> diff --git a/include/grpcpp/impl/sync_cxx11.h b/include/grpcpp/impl/sync_cxx11.h deleted file mode 100644 index 76dcfe391c9..00000000000 --- a/include/grpcpp/impl/sync_cxx11.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef GRPCPP_IMPL_SYNC_CXX11_H -#define GRPCPP_IMPL_SYNC_CXX11_H - -#include - -#endif // GRPCPP_IMPL_SYNC_CXX11_H diff --git a/include/grpcpp/impl/sync_no_cxx11.h b/include/grpcpp/impl/sync_no_cxx11.h deleted file mode 100644 index cc2d4f104cf..00000000000 --- a/include/grpcpp/impl/sync_no_cxx11.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef GRPCPP_IMPL_SYNC_NO_CXX11_H -#define GRPCPP_IMPL_SYNC_NO_CXX11_H - -#include - -#endif // GRPCPP_IMPL_SYNC_NO_CXX11_H diff --git a/src/abseil-cpp/gen_build_yaml.py b/src/abseil-cpp/gen_build_yaml.py index 8a4657f0b3c..2f32a3e25c7 100755 --- a/src/abseil-cpp/gen_build_yaml.py +++ b/src/abseil-cpp/gen_build_yaml.py @@ -26,4 +26,5 @@ for build in builds: build['build'] = 'private' build['build_system'] = [] build['language'] = 'c' + build['secure'] = False print(yaml.dump({'libs': builds})) diff --git a/src/core/ext/filters/client_channel/xds/xds_client.cc b/src/core/ext/filters/client_channel/xds/xds_client.cc index 1d6b86ad65e..f7f2c2c605b 100644 --- a/src/core/ext/filters/client_channel/xds/xds_client.cc +++ b/src/core/ext/filters/client_channel/xds/xds_client.cc @@ -1751,8 +1751,16 @@ XdsClient::~XdsClient() { GRPC_COMBINER_UNREF(combiner_, "xds_client"); } void XdsClient::Orphan() { shutting_down_ = true; chand_.reset(); - cluster_map_.clear(); - endpoint_map_.clear(); + // We do not clear cluster_map_ and endpoint_map_ if the xds client was + // created by the XdsResolver because the maps contain refs for watchers which + // in turn hold refs to the loadbalancing policies. At this point, it is + // possible for ADS calls to be in progress. Unreffing the loadbalancing + // policies before those calls are done would lead to issues such as + // https://github.com/grpc/grpc/issues/20928. + if (service_config_watcher_ != nullptr) { + cluster_map_.clear(); + endpoint_map_.clear(); + } Unref(DEBUG_LOCATION, "XdsClient::Orphan()"); } @@ -1902,13 +1910,13 @@ void XdsClient::NotifyOnError(grpc_error* error) { void* XdsClient::ChannelArgCopy(void* p) { XdsClient* xds_client = static_cast(p); - xds_client->Ref().release(); + xds_client->Ref(DEBUG_LOCATION, "channel arg").release(); return p; } void XdsClient::ChannelArgDestroy(void* p) { XdsClient* xds_client = static_cast(p); - xds_client->Unref(); + xds_client->Unref(DEBUG_LOCATION, "channel arg"); } int XdsClient::ChannelArgCmp(void* p, void* q) { return GPR_ICMP(p, q); } diff --git a/src/core/lib/iomgr/tcp_posix.cc b/src/core/lib/iomgr/tcp_posix.cc index c96031183b3..bd0562bfa74 100644 --- a/src/core/lib/iomgr/tcp_posix.cc +++ b/src/core/lib/iomgr/tcp_posix.cc @@ -1385,7 +1385,8 @@ static bool do_tcp_flush_zerocopy(grpc_tcp* tcp, TcpZerocopySendRecord* record, static void UnrefMaybePutZerocopySendRecord(grpc_tcp* tcp, TcpZerocopySendRecord* record, - uint32_t seq, const char* tag) { + uint32_t seq, + const char* /* tag */) { if (record->Unref()) { tcp->tcp_zerocopy_send_ctx.PutSendRecord(record); } diff --git a/src/core/lib/security/security_connector/local/local_security_connector.cc b/src/core/lib/security/security_connector/local/local_security_connector.cc index 6fb770d7ade..f2e4e0c36d9 100644 --- a/src/core/lib/security/security_connector/local/local_security_connector.cc +++ b/src/core/lib/security/security_connector/local/local_security_connector.cc @@ -66,8 +66,7 @@ grpc_core::RefCountedPtr local_auth_context_create( return ctx; } -void local_check_peer(grpc_security_connector* sc, tsi_peer peer, - grpc_endpoint* ep, +void local_check_peer(tsi_peer peer, grpc_endpoint* ep, grpc_core::RefCountedPtr* auth_context, grpc_closure* on_peer_checked, grpc_local_connect_type type) { @@ -178,7 +177,7 @@ class grpc_local_channel_security_connector final grpc_closure* on_peer_checked) override { grpc_local_credentials* creds = reinterpret_cast(mutable_channel_creds()); - local_check_peer(this, peer, ep, auth_context, on_peer_checked, + local_check_peer(peer, ep, auth_context, on_peer_checked, creds->connect_type()); } @@ -227,7 +226,7 @@ class grpc_local_server_security_connector final grpc_closure* on_peer_checked) override { grpc_local_server_credentials* creds = static_cast(mutable_server_creds()); - local_check_peer(this, peer, ep, auth_context, on_peer_checked, + local_check_peer(peer, ep, auth_context, on_peer_checked, creds->connect_type()); } diff --git a/src/core/tsi/alts/handshaker/alts_handshaker_client.cc b/src/core/tsi/alts/handshaker/alts_handshaker_client.cc index ec17b962972..2592763e5a2 100644 --- a/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +++ b/src/core/tsi/alts/handshaker/alts_handshaker_client.cc @@ -637,7 +637,7 @@ static void handshaker_client_shutdown(alts_handshaker_client* c) { } } -static void handshaker_call_unref(void* arg, grpc_error* error) { +static void handshaker_call_unref(void* arg, grpc_error* /* error */) { grpc_call* call = static_cast(arg); grpc_call_unref(call); } diff --git a/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc b/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc index b24ed1f24ab..0c700306d8f 100644 --- a/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +++ b/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc @@ -430,7 +430,7 @@ struct alts_tsi_handshaker_continue_handshaker_next_args { }; static void alts_tsi_handshaker_create_channel(void* arg, - grpc_error* unused_error) { + grpc_error* /* unused_error */) { alts_tsi_handshaker_continue_handshaker_next_args* next_args = static_cast(arg); alts_tsi_handshaker* handshaker = next_args->handshaker; diff --git a/src/php/README.md b/src/php/README.md index bea2e6f9290..f064ff0d698 100644 --- a/src/php/README.md +++ b/src/php/README.md @@ -47,10 +47,10 @@ You can download the pre-compiled `grpc.dll` extension from the PECL ### Build from source -Clone this repository +Clone this repository at the [latest stable release tag](https://github.com/grpc/grpc/releases) ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc ``` #### Build and install the gRPC C core library @@ -184,7 +184,7 @@ in the future. You can also just build the `grpc_php_plugin` by running: ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $ cd grpc $ git submodule update --init $ make grpc_php_plugin @@ -246,7 +246,7 @@ $ protoc -I=. echo.proto --php_out=. --grpc_out=. \ You will need the source code to run tests ```sh -$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc +$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $ cd grpc $ git submodule update --init ``` diff --git a/src/python/grpcio/README.rst b/src/python/grpcio/README.rst index c7c6aa497d5..9fde3878488 100644 --- a/src/python/grpcio/README.rst +++ b/src/python/grpcio/README.rst @@ -59,7 +59,7 @@ package named :code:`python-dev`). :: $ export REPO_ROOT=grpc # REPO_ROOT can be any directory of your choice - $ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc $REPO_ROOT + $ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $REPO_ROOT $ cd $REPO_ROOT $ git submodule update --init diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi index acee440e673..867245a6944 100644 --- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi +++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/call.pxd.pxi @@ -15,7 +15,7 @@ cdef class _AioCall(GrpcCallWrapper): cdef: - AioChannel _channel + readonly AioChannel _channel list _references object _deadline list _done_callbacks diff --git a/src/python/grpcio/grpc/experimental/aio/_channel.py b/src/python/grpcio/grpc/experimental/aio/_channel.py index 7201aabcc73..cb4ed80339c 100644 --- a/src/python/grpcio/grpc/experimental/aio/_channel.py +++ b/src/python/grpcio/grpc/experimental/aio/_channel.py @@ -12,16 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. """Invocation-side implementation of gRPC Asyncio Python.""" + import asyncio -from typing import Any, AsyncIterable, Optional, Sequence, AbstractSet -from weakref import WeakSet +import sys +from typing import Any, AsyncIterable, Iterable, Optional, Sequence -import logging import grpc -from grpc import _common +from grpc import _common, _compression, _grpcio_metadata from grpc._cython import cygrpc -from grpc import _compression -from grpc import _grpcio_metadata from . import _base_call from ._call import (StreamStreamCall, StreamUnaryCall, UnaryStreamCall, @@ -35,6 +33,15 @@ from ._utils import _timeout_to_deadline _IMMUTABLE_EMPTY_TUPLE = tuple() _USER_AGENT = 'grpc-python-asyncio/{}'.format(_grpcio_metadata.__version__) +if sys.version_info[1] < 7: + + def _all_tasks() -> Iterable[asyncio.Task]: + return asyncio.Task.all_tasks() +else: + + def _all_tasks() -> Iterable[asyncio.Task]: + return asyncio.all_tasks() + def _augment_channel_arguments(base_options: ChannelArgumentType, compression: Optional[grpc.Compression]): @@ -48,50 +55,12 @@ def _augment_channel_arguments(base_options: ChannelArgumentType, ) + compression_channel_argument + user_agent_channel_argument -_LOGGER = logging.getLogger(__name__) - - -class _OngoingCalls: - """Internal class used for have visibility of the ongoing calls.""" - - _calls: AbstractSet[_base_call.RpcContext] - - def __init__(self): - self._calls = WeakSet() - - def _remove_call(self, call: _base_call.RpcContext): - try: - self._calls.remove(call) - except KeyError: - pass - - @property - def calls(self) -> AbstractSet[_base_call.RpcContext]: - """Returns the set of ongoing calls.""" - return self._calls - - def size(self) -> int: - """Returns the number of ongoing calls.""" - return len(self._calls) - - def trace_call(self, call: _base_call.RpcContext): - """Adds and manages a new ongoing call.""" - self._calls.add(call) - call.add_done_callback(self._remove_call) - - class _BaseMultiCallable: """Base class of all multi callable objects. Handles the initialization logic and stores common attributes. """ _loop: asyncio.AbstractEventLoop - _channel: cygrpc.AioChannel - _ongoing_calls: _OngoingCalls - _method: bytes - _request_serializer: SerializingFunction - _response_deserializer: DeserializingFunction - _channel: cygrpc.AioChannel _method: bytes _request_serializer: SerializingFunction @@ -103,7 +72,6 @@ class _BaseMultiCallable: def __init__( self, channel: cygrpc.AioChannel, - ongoing_calls: _OngoingCalls, method: bytes, request_serializer: SerializingFunction, response_deserializer: DeserializingFunction, @@ -112,7 +80,6 @@ class _BaseMultiCallable: ) -> None: self._loop = loop self._channel = channel - self._ongoing_calls = ongoing_calls self._method = method self._request_serializer = request_serializer self._response_deserializer = response_deserializer @@ -170,7 +137,6 @@ class UnaryUnaryMultiCallable(_BaseMultiCallable): self._request_serializer, self._response_deserializer, self._loop) - self._ongoing_calls.trace_call(call) return call @@ -213,7 +179,7 @@ class UnaryStreamMultiCallable(_BaseMultiCallable): wait_for_ready, self._channel, self._method, self._request_serializer, self._response_deserializer, self._loop) - self._ongoing_calls.trace_call(call) + return call @@ -260,7 +226,7 @@ class StreamUnaryMultiCallable(_BaseMultiCallable): credentials, wait_for_ready, self._channel, self._method, self._request_serializer, self._response_deserializer, self._loop) - self._ongoing_calls.trace_call(call) + return call @@ -307,7 +273,7 @@ class StreamStreamMultiCallable(_BaseMultiCallable): credentials, wait_for_ready, self._channel, self._method, self._request_serializer, self._response_deserializer, self._loop) - self._ongoing_calls.trace_call(call) + return call @@ -319,7 +285,6 @@ class Channel: _loop: asyncio.AbstractEventLoop _channel: cygrpc.AioChannel _unary_unary_interceptors: Optional[Sequence[UnaryUnaryClientInterceptor]] - _ongoing_calls: _OngoingCalls def __init__(self, target: str, options: ChannelArgumentType, credentials: Optional[grpc.ChannelCredentials], @@ -359,7 +324,6 @@ class Channel: _common.encode(target), _augment_channel_arguments(options, compression), credentials, self._loop) - self._ongoing_calls = _OngoingCalls() async def __aenter__(self): """Starts an asynchronous context manager. @@ -383,22 +347,48 @@ class Channel: # No new calls will be accepted by the Cython channel. self._channel.closing() - if grace: - # pylint: disable=unused-variable - _, pending = await asyncio.wait(self._ongoing_calls.calls, - timeout=grace, - loop=self._loop) - - if not pending: - return - - # A new set is created acting as a shallow copy because - # when cancellation happens the calls are automatically - # removed from the originally set. - calls = WeakSet(data=self._ongoing_calls.calls) + # Iterate through running tasks + tasks = _all_tasks() + calls = [] + call_tasks = [] + for task in tasks: + stack = task.get_stack(limit=1) + + # If the Task is created by a C-extension, the stack will be empty. + if not stack: + continue + + # Locate ones created by `aio.Call`. + frame = stack[0] + candidate = frame.f_locals.get('self') + if candidate: + if isinstance(candidate, _base_call.Call): + if hasattr(candidate, '_channel'): + # For intercepted Call object + if candidate._channel is not self._channel: + continue + elif hasattr(candidate, '_cython_call'): + # For normal Call object + if candidate._cython_call._channel is not self._channel: + continue + else: + # Unidentified Call object + raise cygrpc.InternalError( + f'Unrecognized call object: {candidate}') + + calls.append(candidate) + call_tasks.append(task) + + # If needed, try to wait for them to finish. + # Call objects are not always awaitables. + if grace and call_tasks: + await asyncio.wait(call_tasks, timeout=grace, loop=self._loop) + + # Time to cancel existing calls. for call in calls: call.cancel() + # Destroy the channel self._channel.close() async def close(self, grace: Optional[float] = None): @@ -487,8 +477,7 @@ class Channel: Returns: A UnaryUnaryMultiCallable value for the named unary-unary method. """ - return UnaryUnaryMultiCallable(self._channel, self._ongoing_calls, - _common.encode(method), + return UnaryUnaryMultiCallable(self._channel, _common.encode(method), request_serializer, response_deserializer, self._unary_unary_interceptors, @@ -500,8 +489,7 @@ class Channel: request_serializer: Optional[SerializingFunction] = None, response_deserializer: Optional[DeserializingFunction] = None ) -> UnaryStreamMultiCallable: - return UnaryStreamMultiCallable(self._channel, self._ongoing_calls, - _common.encode(method), + return UnaryStreamMultiCallable(self._channel, _common.encode(method), request_serializer, response_deserializer, None, self._loop) @@ -511,8 +499,7 @@ class Channel: request_serializer: Optional[SerializingFunction] = None, response_deserializer: Optional[DeserializingFunction] = None ) -> StreamUnaryMultiCallable: - return StreamUnaryMultiCallable(self._channel, self._ongoing_calls, - _common.encode(method), + return StreamUnaryMultiCallable(self._channel, _common.encode(method), request_serializer, response_deserializer, None, self._loop) @@ -522,8 +509,7 @@ class Channel: request_serializer: Optional[SerializingFunction] = None, response_deserializer: Optional[DeserializingFunction] = None ) -> StreamStreamMultiCallable: - return StreamStreamMultiCallable(self._channel, self._ongoing_calls, - _common.encode(method), + return StreamStreamMultiCallable(self._channel, _common.encode(method), request_serializer, response_deserializer, None, self._loop) diff --git a/src/python/grpcio_tests/tests/unit/_metadata_code_details_test.py b/src/python/grpcio_tests/tests/unit/_metadata_code_details_test.py index 4f995bb30b9..5b06eb2bfe8 100644 --- a/src/python/grpcio_tests/tests/unit/_metadata_code_details_test.py +++ b/src/python/grpcio_tests/tests/unit/_metadata_code_details_test.py @@ -250,7 +250,6 @@ class MetadataCodeDetailsTest(unittest.TestCase): test_common.metadata_transmitted(_SERVER_TRAILING_METADATA, call.trailing_metadata())) self.assertIs(grpc.StatusCode.OK, call.code()) - self.assertEqual(_DETAILS, call.details()) def testSuccessfulUnaryStream(self): self._servicer.set_details(_DETAILS) @@ -271,7 +270,6 @@ class MetadataCodeDetailsTest(unittest.TestCase): _SERVER_TRAILING_METADATA, response_iterator_call.trailing_metadata())) self.assertIs(grpc.StatusCode.OK, response_iterator_call.code()) - self.assertEqual(_DETAILS, response_iterator_call.details()) def testSuccessfulStreamUnary(self): self._servicer.set_details(_DETAILS) @@ -290,7 +288,6 @@ class MetadataCodeDetailsTest(unittest.TestCase): test_common.metadata_transmitted(_SERVER_TRAILING_METADATA, call.trailing_metadata())) self.assertIs(grpc.StatusCode.OK, call.code()) - self.assertEqual(_DETAILS, call.details()) def testSuccessfulStreamStream(self): self._servicer.set_details(_DETAILS) @@ -312,7 +309,6 @@ class MetadataCodeDetailsTest(unittest.TestCase): _SERVER_TRAILING_METADATA, response_iterator_call.trailing_metadata())) self.assertIs(grpc.StatusCode.OK, response_iterator_call.code()) - self.assertEqual(_DETAILS, response_iterator_call.details()) def testAbortedUnaryUnary(self): test_cases = zip(_ABORT_CODES, _EXPECTED_CLIENT_CODES, diff --git a/src/python/grpcio_tests/tests_aio/tests.json b/src/python/grpcio_tests/tests_aio/tests.json index d3765c7a531..e05d64ac474 100644 --- a/src/python/grpcio_tests/tests_aio/tests.json +++ b/src/python/grpcio_tests/tests_aio/tests.json @@ -12,7 +12,6 @@ "unit.channel_ready_test.TestChannelReady", "unit.channel_test.TestChannel", "unit.close_channel_test.TestCloseChannel", - "unit.close_channel_test.TestOngoingCalls", "unit.compression_test.TestCompression", "unit.connectivity_test.TestConnectivityState", "unit.done_callback_test.TestDoneCallback", diff --git a/src/python/grpcio_tests/tests_aio/unit/close_channel_test.py b/src/python/grpcio_tests/tests_aio/unit/close_channel_test.py index f7d9de5daf5..f05c74392d9 100644 --- a/src/python/grpcio_tests/tests_aio/unit/close_channel_test.py +++ b/src/python/grpcio_tests/tests_aio/unit/close_channel_test.py @@ -16,12 +16,10 @@ import asyncio import logging import unittest -from weakref import WeakSet import grpc from grpc.experimental import aio from grpc.experimental.aio import _base_call -from grpc.experimental.aio._channel import _OngoingCalls from src.proto.grpc.testing import messages_pb2, test_pb2_grpc from tests_aio.unit._test_base import AioTestBase @@ -31,47 +29,6 @@ _UNARY_CALL_METHOD_WITH_SLEEP = '/grpc.testing.TestService/UnaryCallWithSleep' _LONG_TIMEOUT_THAT_SHOULD_NOT_EXPIRE = 60 -class TestOngoingCalls(unittest.TestCase): - - class FakeCall(_base_call.RpcContext): - - def add_done_callback(self, callback): - self.callback = callback - - def cancel(self): - raise NotImplementedError - - def cancelled(self): - raise NotImplementedError - - def done(self): - raise NotImplementedError - - def time_remaining(self): - raise NotImplementedError - - def test_trace_call(self): - ongoing_calls = _OngoingCalls() - self.assertEqual(ongoing_calls.size(), 0) - - call = TestOngoingCalls.FakeCall() - ongoing_calls.trace_call(call) - self.assertEqual(ongoing_calls.size(), 1) - self.assertEqual(ongoing_calls.calls, WeakSet([call])) - - call.callback(call) - self.assertEqual(ongoing_calls.size(), 0) - self.assertEqual(ongoing_calls.calls, WeakSet()) - - def test_deleted_call(self): - ongoing_calls = _OngoingCalls() - - call = TestOngoingCalls.FakeCall() - ongoing_calls.trace_call(call) - del (call) - self.assertEqual(ongoing_calls.size(), 0) - - class TestCloseChannel(AioTestBase): async def setUp(self): @@ -114,15 +71,11 @@ class TestCloseChannel(AioTestBase): calls = [stub.UnaryCall(messages_pb2.SimpleRequest()) for _ in range(2)] - self.assertEqual(channel._ongoing_calls.size(), 2) - await channel.close() for call in calls: self.assertTrue(call.cancelled()) - self.assertEqual(channel._ongoing_calls.size(), 0) - async def test_close_unary_stream(self): channel = aio.insecure_channel(self._server_target) stub = test_pb2_grpc.TestServiceStub(channel) @@ -130,15 +83,11 @@ class TestCloseChannel(AioTestBase): request = messages_pb2.StreamingOutputCallRequest() calls = [stub.StreamingOutputCall(request) for _ in range(2)] - self.assertEqual(channel._ongoing_calls.size(), 2) - await channel.close() for call in calls: self.assertTrue(call.cancelled()) - self.assertEqual(channel._ongoing_calls.size(), 0) - async def test_close_stream_unary(self): channel = aio.insecure_channel(self._server_target) stub = test_pb2_grpc.TestServiceStub(channel) @@ -150,35 +99,38 @@ class TestCloseChannel(AioTestBase): for call in calls: self.assertTrue(call.cancelled()) - self.assertEqual(channel._ongoing_calls.size(), 0) - async def test_close_stream_stream(self): channel = aio.insecure_channel(self._server_target) stub = test_pb2_grpc.TestServiceStub(channel) calls = [stub.FullDuplexCall() for _ in range(2)] - self.assertEqual(channel._ongoing_calls.size(), 2) - await channel.close() for call in calls: self.assertTrue(call.cancelled()) - self.assertEqual(channel._ongoing_calls.size(), 0) - async def test_close_async_context(self): async with aio.insecure_channel(self._server_target) as channel: stub = test_pb2_grpc.TestServiceStub(channel) calls = [ stub.UnaryCall(messages_pb2.SimpleRequest()) for _ in range(2) ] - self.assertEqual(channel._ongoing_calls.size(), 2) for call in calls: self.assertTrue(call.cancelled()) - self.assertEqual(channel._ongoing_calls.size(), 0) + async def test_channel_isolation(self): + async with aio.insecure_channel(self._server_target) as channel1: + async with aio.insecure_channel(self._server_target) as channel2: + stub1 = test_pb2_grpc.TestServiceStub(channel1) + stub2 = test_pb2_grpc.TestServiceStub(channel2) + + call1 = stub1.UnaryCall(messages_pb2.SimpleRequest()) + call2 = stub2.UnaryCall(messages_pb2.SimpleRequest()) + + self.assertFalse(call1.cancelled()) + self.assertTrue(call2.cancelled()) if __name__ == '__main__': diff --git a/src/upb/gen_build_yaml.py b/src/upb/gen_build_yaml.py index f7b82993986..cb37814d0c7 100755 --- a/src/upb/gen_build_yaml.py +++ b/src/upb/gen_build_yaml.py @@ -26,12 +26,9 @@ out = {} try: out['libs'] = [{ - 'name': - 'upb', - 'build': - 'all', - 'language': - 'c', + 'name': 'upb', + 'build': 'all', + 'language': 'c', 'src': [ "third_party/upb/upb/decode.c", "third_party/upb/upb/encode.c", @@ -50,6 +47,7 @@ try: "third_party/upb/upb/table.int.h", "third_party/upb/upb/upb.h", ], + 'secure': False, }] except: pass diff --git a/templates/Makefile.template b/templates/Makefile.template index 1532ba7258b..7fae035c1e4 100644 --- a/templates/Makefile.template +++ b/templates/Makefile.template @@ -1493,6 +1493,7 @@ "language": "c", "src": sorted(used_abseil_srcs), "hdr": sorted(used_abseil_hdrs), + "secure": False, }) %> ${makelib(grpc_abseil_lib)} @@ -1584,7 +1585,7 @@ $(CARES_DEP) \ $(ADDRESS_SORTING_DEP) \ $(UPB_DEP) \ - $(LIBGRPC_ABSEIL_DEP) \ + $(GRPC_ABSEIL_DEP) \ % endif % endif % if lib.language == 'c++': diff --git a/templates/tools/doxygen/Doxyfile.include b/templates/tools/doxygen/Doxyfile.include index e26ae2b948a..56e6c0b0552 100644 --- a/templates/tools/doxygen/Doxyfile.include +++ b/templates/tools/doxygen/Doxyfile.include @@ -787,7 +787,7 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = ${ - ' \\\n'.join(sorted( + ' \\\n'.join(sorted(set( itertools.chain( itertools.chain.from_iterable( target.public_headers + @@ -798,7 +798,7 @@ INPUT = ${ glob.glob('doc/*.md'), glob.glob('doc/%s/*.md' % docpackage), [] if not internal else srcdoc) - )) + ))) } # This tag can be used to specify the character encoding of the source files diff --git a/templates/tools/doxygen/Doxyfile.objc.include b/templates/tools/doxygen/Doxyfile.objc.include index 5e5867f0417..fb87d23ce1e 100644 --- a/templates/tools/doxygen/Doxyfile.objc.include +++ b/templates/tools/doxygen/Doxyfile.objc.include @@ -784,13 +784,13 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = ${ - ' \\\n'.join(sorted( + ' \\\n'.join(sorted(set( itertools.chain( glob.glob('src/objective-c/GRPCClient/*.h') if not internal else glob_recursive('src/objective-c/GRPCClient', '*.h'), glob.glob('src/objective-c/ProtoRPC/*.h'), glob.glob('src/objective-c/RxLibrary/*.h') if not internal else glob_recursive('src/objective-c/RxLibrary', '*.h'), glob.glob('doc/*.md'), - srcdoc))) + srcdoc)))) } # This tag can be used to specify the character encoding of the source files diff --git a/test/core/iomgr/BUILD b/test/core/iomgr/BUILD index fb4f7c336c0..46a6c285d3a 100644 --- a/test/core/iomgr/BUILD +++ b/test/core/iomgr/BUILD @@ -142,7 +142,10 @@ grpc_cc_test( "gtest", ], language = "C++", - tags = ["no_windows"], # LARGE_MACHINE is not configured for windows RBE + tags = [ + "no_windows", # LARGE_MACHINE is not configured for windows RBE + "notap", # TODO(yashykt@): TSAN on TAP runs very slow. Fix it for TAP. + ], deps = [ "//:gpr", "//:grpc", diff --git a/test/core/iomgr/resolve_address_posix_test.cc b/test/core/iomgr/resolve_address_posix_test.cc index 4247bfa5950..cf7c4f60ddc 100644 --- a/test/core/iomgr/resolve_address_posix_test.cc +++ b/test/core/iomgr/resolve_address_posix_test.cc @@ -231,9 +231,10 @@ int main(int argc, char** argv) { gpr_log(GPR_INFO, "Warning: overriding resolver setting of %s", resolver.get()); } - if (gpr_stricmp(resolver_type, "native") == 0) { + if (resolver_type != nullptr && gpr_stricmp(resolver_type, "native") == 0) { GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "native"); - } else if (gpr_stricmp(resolver_type, "ares") == 0) { + } else if (resolver_type != nullptr && + gpr_stricmp(resolver_type, "ares") == 0) { GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "ares"); } else { gpr_log(GPR_ERROR, "--resolver_type was not set to ares or native"); diff --git a/test/core/iomgr/resolve_address_test.cc b/test/core/iomgr/resolve_address_test.cc index 48d3f8eb105..ca7c914f51b 100644 --- a/test/core/iomgr/resolve_address_test.cc +++ b/test/core/iomgr/resolve_address_test.cc @@ -353,9 +353,10 @@ int main(int argc, char** argv) { gpr_log(GPR_INFO, "Warning: overriding resolver setting of %s", resolver.get()); } - if (gpr_stricmp(resolver_type, "native") == 0) { + if (resolver_type != nullptr && gpr_stricmp(resolver_type, "native") == 0) { GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "native"); - } else if (gpr_stricmp(resolver_type, "ares") == 0) { + } else if (resolver_type != nullptr && + gpr_stricmp(resolver_type, "ares") == 0) { #ifndef GRPC_UV GPR_GLOBAL_CONFIG_SET(grpc_dns_resolver, "ares"); #endif diff --git a/test/core/security/credentials_test.cc b/test/core/security/credentials_test.cc index 85c70bcaf19..b58973d4c34 100644 --- a/test/core/security/credentials_test.cc +++ b/test/core/security/credentials_test.cc @@ -982,6 +982,41 @@ static void test_sts_creds_success(void) { gpr_free(actor_token_path); } +static void test_sts_creds_token_file_not_found(void) { + grpc_core::ExecCtx exec_ctx; + grpc_auth_metadata_context auth_md_ctx = {test_service_url, test_method, + nullptr, nullptr}; + grpc_sts_credentials_options valid_options = { + test_sts_endpoint_url, // sts_endpoint_url + "resource", // resource + "audience", // audience + "scope", // scope + "requested_token_type", // requested_token_type + "/some/completely/random/path", // subject_token_path + test_signed_jwt_token_type, // subject_token_type + "", // actor_token_path + "" // actor_token_type + }; + grpc_call_credentials* creds = + grpc_sts_credentials_create(&valid_options, nullptr); + + /* Check security level. */ + GPR_ASSERT(creds->min_security_level() == GRPC_PRIVACY_AND_INTEGRITY); + + request_metadata_state* state = make_request_metadata_state( + GRPC_ERROR_CREATE_FROM_STATIC_STRING( + "Error occurred when fetching oauth2 token."), + nullptr, 0); + grpc_httpcli_set_override(httpcli_get_should_not_be_called, + httpcli_post_should_not_be_called); + run_request_metadata_test(creds, auth_md_ctx, state); + grpc_core::ExecCtx::Get()->Flush(); + + /* Cleanup. */ + creds->Unref(); + grpc_httpcli_set_override(nullptr, nullptr); +} + static void test_sts_creds_no_actor_token_success(void) { grpc_core::ExecCtx exec_ctx; expected_md emd[] = { @@ -1687,6 +1722,7 @@ int main(int argc, char** argv) { test_sts_creds_no_actor_token_success(); test_sts_creds_load_token_failure(); test_sts_creds_http_failure(); + test_sts_creds_token_file_not_found(); test_jwt_creds_lifetime(); test_jwt_creds_success(); test_jwt_creds_signing_failure(); diff --git a/test/core/security/oauth2_utils.cc b/test/core/security/oauth2_utils.cc index cab06f90ff1..0885a1ac876 100644 --- a/test/core/security/oauth2_utils.cc +++ b/test/core/security/oauth2_utils.cc @@ -27,6 +27,7 @@ #include #include +#include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/security/credentials/credentials.h" typedef struct { @@ -63,17 +64,14 @@ static void on_oauth2_response(void* arg, grpc_error* error) { gpr_mu_unlock(request->mu); } -static void destroy_after_shutdown(void* pollset, grpc_error* /*error*/) { - grpc_pollset_destroy(reinterpret_cast(pollset)); - gpr_free(pollset); -} +static void do_nothing(void* /*arg*/, grpc_error* /*error*/) {} char* grpc_test_fetch_oauth2_token_with_credentials( grpc_call_credentials* creds) { oauth2_request request; - request = {}; + memset(&request, 0, sizeof(request)); grpc_core::ExecCtx exec_ctx; - grpc_closure destroy_after_shutdown_closure; + grpc_closure do_nothing_closure; grpc_auth_metadata_context null_ctx = {"", "", nullptr, nullptr}; grpc_pollset* pollset = @@ -82,8 +80,8 @@ char* grpc_test_fetch_oauth2_token_with_credentials( request.pops = grpc_polling_entity_create_from_pollset(pollset); request.is_done = false; - GRPC_CLOSURE_INIT(&destroy_after_shutdown_closure, destroy_after_shutdown, - pollset, grpc_schedule_on_exec_ctx); + GRPC_CLOSURE_INIT(&do_nothing_closure, do_nothing, nullptr, + grpc_schedule_on_exec_ctx); GRPC_CLOSURE_INIT(&request.closure, on_oauth2_response, &request, grpc_schedule_on_exec_ctx); @@ -110,6 +108,9 @@ char* grpc_test_fetch_oauth2_token_with_credentials( gpr_mu_unlock(request.mu); grpc_pollset_shutdown(grpc_polling_entity_pollset(&request.pops), - &destroy_after_shutdown_closure); + &do_nothing_closure); + grpc_core::ExecCtx::Get()->Flush(); + grpc_pollset_destroy(grpc_polling_entity_pollset(&request.pops)); + gpr_free(pollset); return request.token; } diff --git a/test/cpp/interop/BUILD b/test/cpp/interop/BUILD index 433d354e9b6..c54cc4719e0 100644 --- a/test/cpp/interop/BUILD +++ b/test/cpp/interop/BUILD @@ -227,3 +227,20 @@ grpc_cc_binary( "//test/cpp/util:test_config", ], ) + +grpc_cc_binary( + name = "http2_client", + srcs = [ + "http2_client.cc", + "http2_client.h", + ], + deps = [ + "//:grpc++", + "//src/proto/grpc/testing:empty_proto", + "//src/proto/grpc/testing:messages_proto", + "//src/proto/grpc/testing:test_proto", + "//test/core/util:grpc_test_util", + "//test/cpp/util:test_config", + "//test/cpp/util:test_util", + ], +) diff --git a/test/cpp/interop/xds_interop_client.cc b/test/cpp/interop/xds_interop_client.cc index 3b80ea4eab3..7d6233de5e8 100644 --- a/test/cpp/interop/xds_interop_client.cc +++ b/test/cpp/interop/xds_interop_client.cc @@ -227,6 +227,7 @@ int main(int argc, char** argv) { std::vector test_threads; + test_threads.reserve(FLAGS_num_channels); for (int i = 0; i < FLAGS_num_channels; i++) { test_threads.emplace_back( std::thread(&RunTestLoop, FLAGS_server, duration_per_query)); diff --git a/test/cpp/microbenchmarks/BUILD b/test/cpp/microbenchmarks/BUILD index db7c9db05ae..df2cedfeed3 100644 --- a/test/cpp/microbenchmarks/BUILD +++ b/test/cpp/microbenchmarks/BUILD @@ -14,7 +14,7 @@ licenses(["notice"]) # Apache v2 -load("//bazel:grpc_build_system.bzl", "grpc_cc_binary", "grpc_cc_library", "grpc_cc_test", "grpc_package") +load("//bazel:grpc_build_system.bzl", "grpc_cc_library", "grpc_cc_test", "grpc_package") grpc_package(name = "test/cpp/microbenchmarks") @@ -39,7 +39,6 @@ grpc_cc_library( external_deps = [ "benchmark", ], - tags = ["no_windows"], deps = [ "//:grpc++_unsecure", "//src/proto/grpc/testing:echo_proto", @@ -48,75 +47,121 @@ grpc_cc_library( ], ) -grpc_cc_binary( - name = "bm_closure", +# Need a secure version of helpers to benchmark opencensus +grpc_cc_library( + name = "helpers_secure", testonly = 1, + srcs = ["helpers.cc"], + hdrs = [ + "fullstack_context_mutators.h", + "fullstack_fixtures.h", + "helpers.h", + ], + external_deps = [ + "benchmark", + ], + deps = [ + "//:grpc++", + "//src/proto/grpc/testing:echo_proto", + "//test/core/util:grpc_test_util", + "//test/cpp/util:test_config", + ], +) + +grpc_cc_test( + name = "bm_closure", srcs = ["bm_closure.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_alarm", - testonly = 1, srcs = ["bm_alarm.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_arena", - testonly = 1, srcs = ["bm_arena.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + "notsan", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_byte_buffer", - testonly = 1, srcs = ["bm_byte_buffer.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_channel", - testonly = 1, srcs = ["bm_channel.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_call_create", - testonly = 1, srcs = ["bm_call_create.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_cq", - testonly = 1, srcs = ["bm_cq.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_cq_multiple_threads", - testonly = 1, srcs = ["bm_cq_multiple_threads.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_error", - testonly = 1, srcs = ["bm_error.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) @@ -126,13 +171,16 @@ grpc_cc_library( hdrs = [ "fullstack_streaming_ping_pong.h", ], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_fullstack_streaming_ping_pong", - testonly = 1, + size = "large", srcs = [ "bm_fullstack_streaming_ping_pong.cc", ], @@ -152,9 +200,8 @@ grpc_cc_library( deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_fullstack_streaming_pump", - testonly = 1, srcs = [ "bm_fullstack_streaming_pump.cc", ], @@ -165,14 +212,11 @@ grpc_cc_binary( deps = [":fullstack_streaming_pump_h"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_fullstack_trickle", - testonly = 1, + size = "large", srcs = ["bm_fullstack_trickle.cc"], - tags = [ - "no_mac", # to emulate "excluded_poll_engines: poll" - "no_windows", - ], + tags = ["manual"], deps = [":helpers"], ) @@ -185,9 +229,8 @@ grpc_cc_library( deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_fullstack_unary_ping_pong", - testonly = 1, srcs = [ "bm_fullstack_unary_ping_pong.cc", ], @@ -198,47 +241,56 @@ grpc_cc_binary( deps = [":fullstack_unary_ping_pong_h"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_metadata", - testonly = 1, srcs = ["bm_metadata.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_chttp2_hpack", - testonly = 1, srcs = ["bm_chttp2_hpack.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_opencensus_plugin", - testonly = 1, srcs = ["bm_opencensus_plugin.cc"], language = "C++", deps = [ - ":helpers", + ":helpers_secure", "//:grpc_opencensus_plugin", "//src/proto/grpc/testing:echo_proto", ], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_timer", - testonly = 1, srcs = ["bm_timer.cc"], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], + uses_polling = False, deps = [":helpers"], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_threadpool", - testonly = 1, + size = "large", srcs = ["bm_threadpool.cc"], - tags = ["no_windows"], + tags = ["manual"], + uses_polling = False, deps = [":helpers"], ) @@ -253,7 +305,7 @@ grpc_cc_library( deps = [ ":helpers", "//src/proto/grpc/testing:echo_proto", - "//test/cpp/util:test_util", + "//test/cpp/util:test_util_unsecure", ], ) @@ -269,13 +321,15 @@ grpc_cc_library( ], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_callback_unary_ping_pong", - testonly = 1, srcs = [ "bm_callback_unary_ping_pong.cc", ], - tags = ["no_windows"], + tags = [ + "no_mac", + "no_windows", + ], deps = [":callback_unary_ping_pong_h"], ) @@ -291,12 +345,15 @@ grpc_cc_library( ], ) -grpc_cc_binary( +grpc_cc_test( name = "bm_callback_streaming_ping_pong", - testonly = 1, + size = "large", srcs = [ "bm_callback_streaming_ping_pong.cc", ], - tags = ["no_windows"], + tags = [ + "no_mac", # to emulate "excluded_poll_engines: poll" + "no_windows", + ], deps = [":callback_streaming_ping_pong_h"], ) diff --git a/test/cpp/microbenchmarks/bm_call_create.cc b/test/cpp/microbenchmarks/bm_call_create.cc index f09f9e4baa3..803ad38f1c5 100644 --- a/test/cpp/microbenchmarks/bm_call_create.cc +++ b/test/cpp/microbenchmarks/bm_call_create.cc @@ -513,7 +513,8 @@ static void BM_IsolatedFilter(benchmark::State& state) { static_cast(gpr_zalloc(channel_size)); GPR_ASSERT(GRPC_LOG_IF_ERROR( "channel_stack_init", - grpc_channel_stack_init(1, FilterDestroy, channel_stack, &filters[0], + grpc_channel_stack_init(1, FilterDestroy, channel_stack, + filters.size() == 0 ? nullptr : &filters[0], filters.size(), &channel_args, fixture.flags & REQUIRES_TRANSPORT ? &dummy_transport::dummy_transport diff --git a/test/cpp/microbenchmarks/bm_opencensus_plugin.cc b/test/cpp/microbenchmarks/bm_opencensus_plugin.cc index 4f4884bef9b..908d34aa19f 100644 --- a/test/cpp/microbenchmarks/bm_opencensus_plugin.cc +++ b/test/cpp/microbenchmarks/bm_opencensus_plugin.cc @@ -22,7 +22,8 @@ #include "absl/base/call_once.h" #include "absl/strings/str_cat.h" -#include "include/grpc++/grpc++.h" +#include "include/grpc/grpc.h" +#include "include/grpcpp/grpcpp.h" #include "include/grpcpp/opencensus.h" #include "opencensus/stats/stats.h" #include "src/cpp/ext/filters/census/grpc_plugin.h" @@ -100,6 +101,13 @@ static void BM_E2eLatencyCensusDisabled(benchmark::State& state) { BENCHMARK(BM_E2eLatencyCensusDisabled); static void BM_E2eLatencyCensusEnabled(benchmark::State& state) { + // Avoid a data race between registering plugin and shutdown of previous + // test (order-dependent) by doing an init/shutdown so that any previous + // shutdowns are fully complete first. + grpc_init(); + grpc_shutdown_blocking(); + + // Now start the test by registering the plugin (once in the execution) RegisterOnce(); // This we can safely repeat, and doing so clears accumulated data to avoid // initialization costs varying between runs. diff --git a/test/cpp/microbenchmarks/bm_timer.cc b/test/cpp/microbenchmarks/bm_timer.cc index 7a493df5826..db6ab0a073e 100644 --- a/test/cpp/microbenchmarks/bm_timer.cc +++ b/test/cpp/microbenchmarks/bm_timer.cc @@ -81,7 +81,7 @@ static void BM_TimerBatch(benchmark::State& state) { grpc_timer_init(&timer_closure->timer, deadline, &timer_closure->closure); } if (check) { - grpc_millis next; + grpc_millis next = GRPC_MILLIS_INF_FUTURE; grpc_timer_check(&next); } for (grpc_millis deadline = start; deadline != end; deadline += increment) { diff --git a/tools/bazel b/tools/bazel index d5d517ba99e..a1785078e73 100755 --- a/tools/bazel +++ b/tools/bazel @@ -33,8 +33,7 @@ then fi VERSION=1.0.0 - -echo "INFO: Running bazel wrapper (see //tools/bazel for details), bazel version $VERSION will be used instead of system-wide bazel installation." +echo "INFO: Running bazel wrapper (see //tools/bazel for details), bazel version $VERSION will be used instead of system-wide bazel installation." >&2 BASEURL=https://github.com/bazelbuild/bazel/releases/download/ pushd "$(dirname "$0")" >/dev/null @@ -48,7 +47,7 @@ case $(uname -sm) in suffix=darwin-x86_64 ;; *) - echo "Unsupported architecture: $(uname -sm)" + echo "Unsupported architecture: $(uname -sm)" >&2 exit 1 ;; esac diff --git a/tools/distrib/python/grpcio_tools/README.rst b/tools/distrib/python/grpcio_tools/README.rst index 2fe79350a84..15a76416fb1 100644 --- a/tools/distrib/python/grpcio_tools/README.rst +++ b/tools/distrib/python/grpcio_tools/README.rst @@ -61,7 +61,7 @@ GCC-like stuff, but you may end up having a bad time. :: $ export REPO_ROOT=grpc # REPO_ROOT can be any directory of your choice - $ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc $REPO_ROOT + $ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $REPO_ROOT $ cd $REPO_ROOT $ git submodule update --init diff --git a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_4/Dockerfile b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_4/Dockerfile index 55b1b1e731d..a645b1802af 100644 --- a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_4/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_4/Dockerfile @@ -27,11 +27,11 @@ RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A170311380 RUN \curl -sSL https://get.rvm.io | bash -s stable # Install Ruby 2.4 -RUN /bin/bash -l -c "rvm install ruby-2.4.5" -RUN /bin/bash -l -c "rvm use --default ruby-2.4.5" +RUN /bin/bash -l -c "rvm install ruby-2.4.9" +RUN /bin/bash -l -c "rvm use --default ruby-2.4.9" RUN /bin/bash -l -c "echo 'gem: --no-document' > ~/.gemrc" RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc" -RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.4.5' >> ~/.bashrc" +RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.4.9' >> ~/.bashrc" RUN /bin/bash -l -c "gem install bundler -v 1.17.3 --no-document" RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_5/Dockerfile b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_5/Dockerfile index bed4b3a93ef..44b36e55277 100644 --- a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_5/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_5/Dockerfile @@ -27,11 +27,11 @@ RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A170311380 RUN \curl -sSL https://get.rvm.io | bash -s stable # Install Ruby 2.5 -RUN /bin/bash -l -c "rvm install ruby-2.5.3" -RUN /bin/bash -l -c "rvm use --default ruby-2.5.3" +RUN /bin/bash -l -c "rvm install ruby-2.5.7" +RUN /bin/bash -l -c "rvm use --default ruby-2.5.7" RUN /bin/bash -l -c "echo 'gem: --no-document' > ~/.gemrc" RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc" -RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.5.3' >> ~/.bashrc" +RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.5.7' >> ~/.bashrc" RUN /bin/bash -l -c "gem install bundler -v 1.17.3 --no-document" RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_6/Dockerfile b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_6/Dockerfile index af1839eba93..fab8d53b2be 100644 --- a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_6/Dockerfile +++ b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_6/Dockerfile @@ -27,11 +27,11 @@ RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A170311380 RUN \curl -sSL https://get.rvm.io | bash -s stable # Install Ruby 2.6 -RUN /bin/bash -l -c "rvm install ruby-2.6.0" -RUN /bin/bash -l -c "rvm use --default ruby-2.6.0" +RUN /bin/bash -l -c "rvm install ruby-2.6.5" +RUN /bin/bash -l -c "rvm use --default ruby-2.6.5" RUN /bin/bash -l -c "echo 'gem: --no-document' > ~/.gemrc" RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc" -RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.6.0' >> ~/.bashrc" +RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.6.5' >> ~/.bashrc" RUN /bin/bash -l -c "gem install bundler --no-document" RUN mkdir /var/local/jenkins diff --git a/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_7/Dockerfile b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_7/Dockerfile new file mode 100644 index 00000000000..d5aeb9f22a9 --- /dev/null +++ b/tools/dockerfile/distribtest/ruby_jessie_x64_ruby_2_7/Dockerfile @@ -0,0 +1,40 @@ +# Copyright 2020 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM debian:jessie + +# Install Git and basic packages. +RUN apt-get update && apt-get install -y \ + curl \ + gcc && apt-get clean + +#================== +# Ruby dependencies + +# Install rvm +RUN gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB +RUN \curl -sSL https://get.rvm.io | bash -s stable + +# Install Ruby 2.7 +RUN /bin/bash -l -c "rvm install ruby-2.7.0" +RUN /bin/bash -l -c "rvm use --default ruby-2.7.0" +RUN /bin/bash -l -c "echo 'gem: --no-document' > ~/.gemrc" +RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc" +RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.7.0' >> ~/.bashrc" +RUN /bin/bash -l -c "gem install bundler --no-document" + +RUN mkdir /var/local/jenkins + +# Define the default command. +CMD ["bash"] diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index 46d038eac5d..d1da5829623 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -826,7 +826,6 @@ include/grpc++/impl/codegen/completion_queue_tag.h \ include/grpc++/impl/codegen/config.h \ include/grpc++/impl/codegen/config_protobuf.h \ include/grpc++/impl/codegen/core_codegen.h \ -include/grpc++/impl/codegen/core_codegen.h \ include/grpc++/impl/codegen/core_codegen_interface.h \ include/grpc++/impl/codegen/create_auth_context.h \ include/grpc++/impl/codegen/grpc_library.h \ @@ -975,7 +974,6 @@ include/grpcpp/impl/codegen/completion_queue_tag.h \ include/grpcpp/impl/codegen/config.h \ include/grpcpp/impl/codegen/config_protobuf.h \ include/grpcpp/impl/codegen/core_codegen.h \ -include/grpcpp/impl/codegen/core_codegen.h \ include/grpcpp/impl/codegen/core_codegen_interface.h \ include/grpcpp/impl/codegen/create_auth_context.h \ include/grpcpp/impl/codegen/delegating_channel.h \ diff --git a/tools/doxygen/Doxyfile.core b/tools/doxygen/Doxyfile.core index 0c0e95a1920..9ab5b3e429c 100644 --- a/tools/doxygen/Doxyfile.core +++ b/tools/doxygen/Doxyfile.core @@ -816,43 +816,28 @@ include/grpc/grpc_posix.h \ include/grpc/grpc_security.h \ include/grpc/grpc_security_constants.h \ include/grpc/impl/codegen/atm.h \ -include/grpc/impl/codegen/atm.h \ -include/grpc/impl/codegen/atm_gcc_atomic.h \ include/grpc/impl/codegen/atm_gcc_atomic.h \ include/grpc/impl/codegen/atm_gcc_sync.h \ -include/grpc/impl/codegen/atm_gcc_sync.h \ -include/grpc/impl/codegen/atm_windows.h \ include/grpc/impl/codegen/atm_windows.h \ include/grpc/impl/codegen/byte_buffer.h \ include/grpc/impl/codegen/byte_buffer_reader.h \ include/grpc/impl/codegen/compression_types.h \ include/grpc/impl/codegen/connectivity_state.h \ include/grpc/impl/codegen/fork.h \ -include/grpc/impl/codegen/fork.h \ -include/grpc/impl/codegen/gpr_slice.h \ include/grpc/impl/codegen/gpr_slice.h \ include/grpc/impl/codegen/gpr_types.h \ -include/grpc/impl/codegen/gpr_types.h \ include/grpc/impl/codegen/grpc_types.h \ include/grpc/impl/codegen/log.h \ -include/grpc/impl/codegen/log.h \ -include/grpc/impl/codegen/port_platform.h \ include/grpc/impl/codegen/port_platform.h \ include/grpc/impl/codegen/propagation_bits.h \ include/grpc/impl/codegen/slice.h \ include/grpc/impl/codegen/status.h \ include/grpc/impl/codegen/sync.h \ -include/grpc/impl/codegen/sync.h \ include/grpc/impl/codegen/sync_abseil.h \ -include/grpc/impl/codegen/sync_abseil.h \ -include/grpc/impl/codegen/sync_custom.h \ include/grpc/impl/codegen/sync_custom.h \ include/grpc/impl/codegen/sync_generic.h \ -include/grpc/impl/codegen/sync_generic.h \ -include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_windows.h \ -include/grpc/impl/codegen/sync_windows.h \ include/grpc/load_reporting.h \ include/grpc/slice.h \ include/grpc/slice_buffer.h \ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 8318caf4f27..04cb62c32bc 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -816,43 +816,28 @@ include/grpc/grpc_posix.h \ include/grpc/grpc_security.h \ include/grpc/grpc_security_constants.h \ include/grpc/impl/codegen/atm.h \ -include/grpc/impl/codegen/atm.h \ -include/grpc/impl/codegen/atm_gcc_atomic.h \ include/grpc/impl/codegen/atm_gcc_atomic.h \ include/grpc/impl/codegen/atm_gcc_sync.h \ -include/grpc/impl/codegen/atm_gcc_sync.h \ -include/grpc/impl/codegen/atm_windows.h \ include/grpc/impl/codegen/atm_windows.h \ include/grpc/impl/codegen/byte_buffer.h \ include/grpc/impl/codegen/byte_buffer_reader.h \ include/grpc/impl/codegen/compression_types.h \ include/grpc/impl/codegen/connectivity_state.h \ include/grpc/impl/codegen/fork.h \ -include/grpc/impl/codegen/fork.h \ -include/grpc/impl/codegen/gpr_slice.h \ include/grpc/impl/codegen/gpr_slice.h \ include/grpc/impl/codegen/gpr_types.h \ -include/grpc/impl/codegen/gpr_types.h \ include/grpc/impl/codegen/grpc_types.h \ include/grpc/impl/codegen/log.h \ -include/grpc/impl/codegen/log.h \ -include/grpc/impl/codegen/port_platform.h \ include/grpc/impl/codegen/port_platform.h \ include/grpc/impl/codegen/propagation_bits.h \ include/grpc/impl/codegen/slice.h \ include/grpc/impl/codegen/status.h \ include/grpc/impl/codegen/sync.h \ -include/grpc/impl/codegen/sync.h \ include/grpc/impl/codegen/sync_abseil.h \ -include/grpc/impl/codegen/sync_abseil.h \ -include/grpc/impl/codegen/sync_custom.h \ include/grpc/impl/codegen/sync_custom.h \ include/grpc/impl/codegen/sync_generic.h \ -include/grpc/impl/codegen/sync_generic.h \ -include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_windows.h \ -include/grpc/impl/codegen/sync_windows.h \ include/grpc/load_reporting.h \ include/grpc/slice.h \ include/grpc/slice_buffer.h \ diff --git a/tools/remote_build/rbe_common.bazelrc b/tools/remote_build/rbe_common.bazelrc index af024760cd4..5b5dcdf9d93 100644 --- a/tools/remote_build/rbe_common.bazelrc +++ b/tools/remote_build/rbe_common.bazelrc @@ -55,7 +55,7 @@ build:asan --copt=-gmlt # use double the default value for "moderate" and "long" timeout as sanitizer # tests tend to be slower build:asan --test_timeout=60,600,1800,3600 -build:asan --test_tag_filters=-no_linux,-qps_json_driver +build:asan --test_tag_filters=-no_linux,-noasan,-qps_json_driver # memory sanitizer: most settings are already in %workspace%/.bazelrc # we only need a few additional ones that are Foundry specific @@ -78,7 +78,7 @@ build:tsan --copt=-gmlt # use double the default value for "moderate" and "long" timeout as sanitizer # tests tend to be slower build:tsan --test_timeout=60,600,1800,3600 -build:tsan --test_tag_filters=-no_linux,-qps_json_driver +build:tsan --test_tag_filters=-no_linux,-notsan,-qps_json_driver build:tsan --extra_execution_platforms=@rbe_default//config:platform # undefined behavior sanitizer: most settings are already in %workspace%/.bazelrc diff --git a/tools/run_tests/artifacts/distribtest_targets.py b/tools/run_tests/artifacts/distribtest_targets.py index 63c84481f7c..e50b446eac6 100644 --- a/tools/run_tests/artifacts/distribtest_targets.py +++ b/tools/run_tests/artifacts/distribtest_targets.py @@ -340,6 +340,7 @@ def targets(): RubyDistribTest('linux', 'x64', 'jessie', ruby_version='ruby_2_4'), RubyDistribTest('linux', 'x64', 'jessie', ruby_version='ruby_2_5'), RubyDistribTest('linux', 'x64', 'jessie', ruby_version='ruby_2_6'), + # RubyDistribTest('linux', 'x64', 'jessie', ruby_version='ruby_2_7'), RubyDistribTest('linux', 'x64', 'centos6'), RubyDistribTest('linux', 'x64', 'centos7'), RubyDistribTest('linux', 'x64', 'fedora23'), diff --git a/tools/run_tests/sanity/check_deprecated_grpc++.py b/tools/run_tests/sanity/check_deprecated_grpc++.py index 4ec49fae394..02307fedaa8 100755 --- a/tools/run_tests/sanity/check_deprecated_grpc++.py +++ b/tools/run_tests/sanity/check_deprecated_grpc++.py @@ -51,10 +51,8 @@ expected_files = [ "include/grpc++/impl/rpc_service_method.h", "include/grpc++/impl/method_handler_impl.h", "include/grpc++/impl/server_builder_plugin.h", - "include/grpc++/impl/sync_cxx11.h", "include/grpc++/impl/server_initializer.h", "include/grpc++/impl/serialization_traits.h", - "include/grpc++/impl/sync_no_cxx11.h", "include/grpc++/impl/codegen/sync_stream.h", "include/grpc++/impl/codegen/channel_interface.h", "include/grpc++/impl/codegen/config_protobuf.h",