From 6b0f95b350f623c29ad24a4695a9aa2e8d0b1957 Mon Sep 17 00:00:00 2001 From: Yash Tibrewal Date: Fri, 7 Feb 2025 13:36:51 -0800 Subject: [PATCH 1/2] [shutdown] Guard log with TraceFlag (#38702) Close https://github.com/grpc/grpc/issues/38490 Closes #38702 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/38702 from yashykt:ReduceLogLevel 4ac55dd6bb30860c391196200b3fb8a98ee8bf8e PiperOrigin-RevId: 724455807 --- src/core/lib/surface/init.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/lib/surface/init.cc b/src/core/lib/surface/init.cc index 9f3bd74786b69..ed468e8cf5da9 100644 --- a/src/core/lib/surface/init.cc +++ b/src/core/lib/surface/init.cc @@ -238,7 +238,8 @@ bool grpc_wait_for_shutdown_with_timeout(absl::Duration timeout) { grpc_core::MutexLock lock(g_init_mu); while (g_initializations != 0) { if (g_shutting_down_cv->WaitWithDeadline(g_init_mu, deadline)) { - LOG(ERROR) << "grpc_wait_for_shutdown_with_timeout() timed out."; + GRPC_TRACE_LOG(api, ERROR) + << "grpc_wait_for_shutdown_with_timeout() timed out."; return false; } } From 16715aab00958232d9c28283f42745cd1155d5bc Mon Sep 17 00:00:00 2001 From: Esun Kim Date: Fri, 7 Feb 2025 14:38:10 -0800 Subject: [PATCH 2/2] [Deps] Revert "Removed vendored python deps from Bazel builds (#38692)" (#38705) This reverts commit 68b5dc5125dc65bfe2b6e6f888f7fc3aaed16d60 (https://github.com/grpc/grpc/pull/38692). Copybara missed the load statement, which shouldn't happen, causing many build failures on master. Closes #38705 PiperOrigin-RevId: 724474971 --- .github/labeler.yml | 1 - MODULE.bazel | 2 +- WORKSPACE | 2 +- bazel/grpc_deps.bzl | 60 +++++++++ requirements.bazel.lock | 116 ------------------ requirements.bazel.txt | 82 ++++++------- templates/MODULE.bazel.template | 2 +- test/cpp/naming/utils/BUILD | 12 +- third_party/BUILD | 12 ++ third_party/constantly.BUILD | 7 ++ third_party/incremental.BUILD | 10 ++ third_party/twisted.BUILD | 15 +++ third_party/yaml.BUILD | 10 ++ third_party/zope_interface.BUILD | 13 ++ tools/distrib/python/docgen.py | 2 +- .../run_tests/sanity/check_bazel_workspace.py | 17 +++ 16 files changed, 196 insertions(+), 167 deletions(-) delete mode 100644 requirements.bazel.lock create mode 100644 third_party/constantly.BUILD create mode 100644 third_party/incremental.BUILD create mode 100644 third_party/twisted.BUILD create mode 100644 third_party/yaml.BUILD create mode 100644 third_party/zope_interface.BUILD diff --git a/.github/labeler.yml b/.github/labeler.yml index 15fa2d9e07d9f..b0070de633771 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -46,7 +46,6 @@ lang/python: - any-glob-to-any-file: - bazel/python_rules.bzl - examples/python/** - - requirements.bazel.lock - requirements.bazel.txt - src/compiler/python* - all-globs-to-any-file: diff --git a/MODULE.bazel b/MODULE.bazel index 945dc6b217302..d3c3a8342b0be 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -85,7 +85,7 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") pip.parse( hub_name = "grpc_python_dependencies", python_version = python_version, - requirements_lock = "//:requirements.bazel.lock", + requirements_lock = "//:requirements.bazel.txt", ) for python_version in PYTHON_VERSIONS ] diff --git a/WORKSPACE b/WORKSPACE index 3d02cba5e877f..691f983ed728d 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -46,7 +46,7 @@ load("@rules_python//python:pip.bzl", "pip_parse") pip_parse( name = "grpc_python_dependencies", - requirements_lock = "@com_github_grpc_grpc//:requirements.bazel.lock", + requirements_lock = "@com_github_grpc_grpc//:requirements.bazel.txt", ) load("@grpc_python_dependencies//:requirements.bzl", "install_deps") diff --git a/bazel/grpc_deps.bzl b/bazel/grpc_deps.bzl index 0cde8ed64ae47..211f72690bc61 100644 --- a/bazel/grpc_deps.bzl +++ b/bazel/grpc_deps.bzl @@ -368,6 +368,66 @@ def grpc_test_only_deps(): Loads dependencies that are only needed to run grpc library's tests. """ + if "com_github_twisted_twisted" not in native.existing_rules(): + http_archive( + name = "com_github_twisted_twisted", + sha256 = "ca17699d0d62eafc5c28daf2c7d0a18e62ae77b4137300b6c7d7868b39b06139", + strip_prefix = "twisted-twisted-17.5.0", + urls = [ + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/twisted/twisted/archive/twisted-17.5.0.zip", + "https://github.com/twisted/twisted/archive/twisted-17.5.0.zip", + ], + build_file = "@com_github_grpc_grpc//third_party:twisted.BUILD", + ) + + if "com_github_yaml_pyyaml" not in native.existing_rules(): + http_archive( + name = "com_github_yaml_pyyaml", + sha256 = "e34d97db6d846f5e2ad51417fd646e7ce6a3a70726ccea2a857e0580a7155f39", + strip_prefix = "pyyaml-6.0.1", + urls = [ + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/yaml/pyyaml/archive/6.0.1.zip", + "https://github.com/yaml/pyyaml/archive/6.0.1.zip", + ], + build_file = "@com_github_grpc_grpc//third_party:yaml.BUILD", + ) + + if "com_github_twisted_incremental" not in native.existing_rules(): + http_archive( + name = "com_github_twisted_incremental", + sha256 = "f0ca93359ee70243ff7fbf2d904a6291810bd88cb80ed4aca6fa77f318a41a36", + strip_prefix = "incremental-incremental-17.5.0", + urls = [ + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/twisted/incremental/archive/incremental-17.5.0.zip", + "https://github.com/twisted/incremental/archive/incremental-17.5.0.zip", + ], + build_file = "@com_github_grpc_grpc//third_party:incremental.BUILD", + ) + + if "com_github_zopefoundation_zope_interface" not in native.existing_rules(): + http_archive( + name = "com_github_zopefoundation_zope_interface", + sha256 = "e9579fc6149294339897be3aa9ecd8a29217c0b013fe6f44fcdae00e3204198a", + strip_prefix = "zope.interface-4.4.3", + urls = [ + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/zopefoundation/zope.interface/archive/4.4.3.zip", + "https://github.com/zopefoundation/zope.interface/archive/4.4.3.zip", + ], + build_file = "@com_github_grpc_grpc//third_party:zope_interface.BUILD", + ) + + if "com_github_twisted_constantly" not in native.existing_rules(): + http_archive( + name = "com_github_twisted_constantly", + sha256 = "2702cd322161a579d2c0dbf94af4e57712eedc7bd7bbbdc554a230544f7d346c", + strip_prefix = "constantly-15.1.0", + urls = [ + "https://storage.googleapis.com/grpc-bazel-mirror/github.com/twisted/constantly/archive/15.1.0.zip", + "https://github.com/twisted/constantly/archive/15.1.0.zip", + ], + build_file = "@com_github_grpc_grpc//third_party:constantly.BUILD", + ) + if "com_google_libprotobuf_mutator" not in native.existing_rules(): http_archive( name = "com_google_libprotobuf_mutator", diff --git a/requirements.bazel.lock b/requirements.bazel.lock deleted file mode 100644 index 94be90bc6cd6d..0000000000000 --- a/requirements.bazel.lock +++ /dev/null @@ -1,116 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.8 -# by the following command: -# -# pip-compile --allow-unsafe requirements.bazel.in -# -absl-py==2.1.0 - # via -r requirements.bazel.in -attrs==25.1.0 - # via twisted -automat==24.8.1 - # via twisted -cachetools==5.5.1 - # via google-auth -certifi==2025.1.31 - # via - # -r requirements.bazel.in - # requests -chardet==5.2.0 - # via -r requirements.bazel.in -charset-normalizer==3.4.1 - # via requests -constantly==23.10.4 - # via twisted -deprecated==1.2.18 - # via - # opentelemetry-api - # opentelemetry-semantic-conventions -gevent==24.2.1 - # via -r requirements.bazel.in -google-auth==2.38.0 - # via -r requirements.bazel.in -googleapis-common-protos==1.66.0 - # via -r requirements.bazel.in -greenlet==3.1.1 - # via gevent -hyperlink==21.0.0 - # via twisted -idna==3.10 - # via - # -r requirements.bazel.in - # hyperlink - # requests -importlib-metadata==8.5.0 - # via opentelemetry-api -incremental==24.7.2 - # via twisted -opentelemetry-api==1.30.0 - # via - # -r requirements.bazel.in - # opentelemetry-exporter-prometheus - # opentelemetry-resourcedetector-gcp - # opentelemetry-sdk - # opentelemetry-semantic-conventions -opentelemetry-exporter-prometheus==0.51b0 - # via -r requirements.bazel.in -opentelemetry-resourcedetector-gcp==1.9.0a0 - # via -r requirements.bazel.in -opentelemetry-sdk==1.30.0 - # via - # -r requirements.bazel.in - # opentelemetry-exporter-prometheus - # opentelemetry-resourcedetector-gcp -opentelemetry-semantic-conventions==0.51b0 - # via opentelemetry-sdk -prometheus-client==0.21.1 - # via opentelemetry-exporter-prometheus -protobuf==5.29.3 - # via - # -r requirements.bazel.in - # googleapis-common-protos -pyasn1==0.6.1 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.4.1 - # via google-auth -pyyaml==6.0.2 - # via -r requirements.bazel.in -requests==2.32.3 - # via - # -r requirements.bazel.in - # opentelemetry-resourcedetector-gcp -rsa==4.9 - # via google-auth -tomli==2.2.1 - # via incremental -twisted==24.11.0 - # via -r requirements.bazel.in -typing-extensions==4.12.2 - # via - # automat - # opentelemetry-resourcedetector-gcp - # opentelemetry-sdk - # twisted -urllib3==2.2.3 - # via - # -r requirements.bazel.in - # requests -wrapt==1.17.2 - # via deprecated -zipp==3.20.2 - # via importlib-metadata -zope-event==5.0 - # via gevent -zope-interface==7.2 - # via - # gevent - # twisted - -# The following packages are considered to be unsafe in a requirements file: -setuptools==75.3.0 - # via - # incremental - # zope-event - # zope-interface diff --git a/requirements.bazel.txt b/requirements.bazel.txt index 98e5a70171960..373e74322c175 100644 --- a/requirements.bazel.txt +++ b/requirements.bazel.txt @@ -1,41 +1,41 @@ -# Copyright 2025 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. -# -# This file provides the source for generating requirements.bazel.lock. -# Instructions for generation follow: -# Use the oldest supported version of Python -# -# $ docker run -it --rm -v $(pwd):/grpc python:3.8 /bin/bash -# # cd grpc -# # pip install pip-tools -# # pip-compile --allow-unsafe requirements.bazel.txt > requirements.bazel.lock -# # exit -# $ sudo chown $USER requirements.bazel.lock - -absl-py -certifi -chardet -gevent -google-auth -googleapis-common-protos -idna -opentelemetry-api -opentelemetry-exporter-prometheus -opentelemetry-resourcedetector-gcp -opentelemetry-sdk -protobuf -pyyaml # for DNS test -requests -twisted # for DNS test -urllib3 +# GRPC Python setup requirements +# The requirements listed below are solely for Bazel tests and should not be used elsewhere. +absl-py==1.4.0 +cachetools==5.3.2 +certifi==2023.7.22 +chardet==3.0.4 +charset-normalizer==3.3.2 +coverage==4.5.4 +cython==3.0.0 +Deprecated==1.2.14 +gevent==22.08.0 +google-api-core==2.24.0 +google-auth==2.23.4 +google-cloud-monitoring==2.26.0 +google-cloud-trace==1.15.0 +googleapis-common-protos==1.63.1 +greenlet==1.1.3.post0 +idna==2.7 +importlib-metadata==6.11.0 +oauth2client==4.1.0 +opencensus-context==0.1.3 +opentelemetry-api==1.25.0 +opentelemetry-exporter-prometheus==0.46b0 +opentelemetry-resourcedetector-gcp==1.6.0a0 +opentelemetry-sdk==1.25.0 +opentelemetry-semantic-conventions==0.46b0 +prometheus_client==0.20.0 +proto-plus==1.25.0 +protobuf>=5.27.1,<6.0dev +pyasn1-modules==0.3.0 +pyasn1==0.5.0 +requests==2.25.1 +rsa==4.9 +setuptools==44.1.1 +typing-extensions==4.9.0 +urllib3==1.26.18 +wheel==0.38.1 +wrapt==1.16.0 +zipp==3.17.0 +zope.event==4.5.0 +zope.interface==6.1 diff --git a/templates/MODULE.bazel.template b/templates/MODULE.bazel.template index 04e943c0afbe2..57ab319e5b517 100644 --- a/templates/MODULE.bazel.template +++ b/templates/MODULE.bazel.template @@ -87,7 +87,7 @@ pip.parse( hub_name = "grpc_python_dependencies", python_version = python_version, - requirements_lock = "//:requirements.bazel.lock", + requirements_lock = "//:requirements.bazel.txt", ) for python_version in PYTHON_VERSIONS ] diff --git a/test/cpp/naming/utils/BUILD b/test/cpp/naming/utils/BUILD index 95d1686fcf639..37f497ffe2ada 100644 --- a/test/cpp/naming/utils/BUILD +++ b/test/cpp/naming/utils/BUILD @@ -28,19 +28,21 @@ grpc_py_binary( name = "dns_server", testonly = True, srcs = ["dns_server.py"], - python_version = "PY3", - deps = [ - requirement("twisted"), - requirement("pyyaml"), + external_deps = [ + "twisted", + "yaml", ], + python_version = "PY3", ) grpc_py_binary( name = "dns_resolver", testonly = True, srcs = ["dns_resolver.py"], + external_deps = [ + "twisted", + ], python_version = "PY3", - deps = [requirement("twisted")], ) grpc_py_binary( diff --git a/third_party/BUILD b/third_party/BUILD index f13f4c875e2a8..9d0c08258746a 100644 --- a/third_party/BUILD +++ b/third_party/BUILD @@ -208,3 +208,15 @@ alias( actual = "@com_google_googleapis//google/logging/v2:logging_cc_proto", tags = ["manual"], ) + +alias( + name = "twisted", + actual = "@com_github_twisted_twisted//:twisted", + tags = ["manual"], +) + +alias( + name = "yaml", + actual = "@com_github_yaml_pyyaml//:yaml", + tags = ["manual"], +) diff --git a/third_party/constantly.BUILD b/third_party/constantly.BUILD new file mode 100644 index 0000000000000..f1f93cb79fc23 --- /dev/null +++ b/third_party/constantly.BUILD @@ -0,0 +1,7 @@ +py_library( + name = "constantly", + srcs = glob(["constantly/*.py"]), + visibility = [ + "//visibility:public", + ], +) diff --git a/third_party/incremental.BUILD b/third_party/incremental.BUILD new file mode 100644 index 0000000000000..f2a06b49dc406 --- /dev/null +++ b/third_party/incremental.BUILD @@ -0,0 +1,10 @@ +py_library( + name = "incremental", + srcs = glob(["src/incremental/*.py"]), + imports = [ + "src", + ], + visibility = [ + "//visibility:public", + ], +) diff --git a/third_party/twisted.BUILD b/third_party/twisted.BUILD new file mode 100644 index 0000000000000..5005c5a3f8c2d --- /dev/null +++ b/third_party/twisted.BUILD @@ -0,0 +1,15 @@ +py_library( + name = "twisted", + srcs = glob(["src/twisted/**/*.py"]), + imports = [ + "src", + ], + visibility = [ + "//visibility:public", + ], + deps = [ + "@com_github_twisted_incremental//:incremental", + "@com_github_twisted_constantly//:constantly", + "@com_github_zopefoundation_zope_interface//:zope_interface", + ], +) diff --git a/third_party/yaml.BUILD b/third_party/yaml.BUILD new file mode 100644 index 0000000000000..f88854c5719b8 --- /dev/null +++ b/third_party/yaml.BUILD @@ -0,0 +1,10 @@ +py_library( + name = "yaml", + srcs = glob(["lib/yaml/*.py"]), + imports = [ + "lib", + ], + visibility = [ + "//visibility:public", + ], +) diff --git a/third_party/zope_interface.BUILD b/third_party/zope_interface.BUILD new file mode 100644 index 0000000000000..b7b8d1e6cf130 --- /dev/null +++ b/third_party/zope_interface.BUILD @@ -0,0 +1,13 @@ +py_library( + name = "zope_interface", + srcs = glob([ + "src/zope/interface/*.py", + "src/zope/interface/common/*.py", + ]), + imports = [ + "src", + ], + visibility = [ + "//visibility:public", + ], +) diff --git a/tools/distrib/python/docgen.py b/tools/distrib/python/docgen.py index e7c02416332c0..00d00940e73bc 100755 --- a/tools/distrib/python/docgen.py +++ b/tools/distrib/python/docgen.py @@ -38,7 +38,7 @@ PROJECT_ROOT = os.path.abspath(os.path.join(SCRIPT_DIR, "..", "..", "..")) SETUP_PATH = os.path.join(PROJECT_ROOT, "setup.py") -REQUIREMENTS_PATH = os.path.join(PROJECT_ROOT, "requirements.bazel.lock") +REQUIREMENTS_PATH = os.path.join(PROJECT_ROOT, "requirements.bazel.txt") DOC_PATH = os.path.join(PROJECT_ROOT, "doc/build") if "VIRTUAL_ENV" in os.environ: diff --git a/tools/run_tests/sanity/check_bazel_workspace.py b/tools/run_tests/sanity/check_bazel_workspace.py index 373bc4f81ef32..122e13031919e 100755 --- a/tools/run_tests/sanity/check_bazel_workspace.py +++ b/tools/run_tests/sanity/check_bazel_workspace.py @@ -38,6 +38,13 @@ _BAZEL_SKYLIB_DEP_NAME = "bazel_skylib" _BAZEL_TOOLCHAINS_DEP_NAME = "bazel_toolchains" _BAZEL_COMPDB_DEP_NAME = "bazel_compdb" +_TWISTED_TWISTED_DEP_NAME = "com_github_twisted_twisted" +_YAML_PYYAML_DEP_NAME = "com_github_yaml_pyyaml" +_TWISTED_INCREMENTAL_DEP_NAME = "com_github_twisted_incremental" +_ZOPEFOUNDATION_ZOPE_INTERFACE_DEP_NAME = ( + "com_github_zopefoundation_zope_interface" +) +_TWISTED_CONSTANTLY_DEP_NAME = "com_github_twisted_constantly" _GRPC_DEP_NAMES = [ "platforms", @@ -56,6 +63,11 @@ _BAZEL_SKYLIB_DEP_NAME, _BAZEL_TOOLCHAINS_DEP_NAME, _BAZEL_COMPDB_DEP_NAME, + _TWISTED_TWISTED_DEP_NAME, + _YAML_PYYAML_DEP_NAME, + _TWISTED_INCREMENTAL_DEP_NAME, + _ZOPEFOUNDATION_ZOPE_INTERFACE_DEP_NAME, + _TWISTED_CONSTANTLY_DEP_NAME, "bazel_features", "rules_proto", "io_bazel_rules_go", @@ -82,6 +94,11 @@ _BAZEL_SKYLIB_DEP_NAME, _BAZEL_TOOLCHAINS_DEP_NAME, _BAZEL_COMPDB_DEP_NAME, + _TWISTED_TWISTED_DEP_NAME, + _YAML_PYYAML_DEP_NAME, + _TWISTED_INCREMENTAL_DEP_NAME, + _ZOPEFOUNDATION_ZOPE_INTERFACE_DEP_NAME, + _TWISTED_CONSTANTLY_DEP_NAME, "bazel_features", "rules_proto", "io_bazel_rules_go",