Commit Graph

1363 Commits

Author SHA1 Message Date
Esun Kim 8e78a0a2cf
[Release] Bump version to 1.59.4 (on v1.59.x branch) (#35816)
Change was created by the release automation script. See go/grpc-release
2024-02-05 15:00:53 -08:00
Richard Belleville 35df344f5e
Bump v1.59.x to v1.59.3 (#35003) 2023-11-16 13:47:17 -08:00
Richard Belleville 05430a5cfd
[Release] Bump v1.59.x to 1.59.2 (#34815) 2023-10-27 14:57:55 -07:00
Xuan Wang 50b02da427
[Fix Python Deadlock] Guard grpc_ssl_credentials_create with nogil (v1.59.x backport) (#34725)
Backport of #34712 to v1.59.x.
---
Fix: https://github.com/grpc/grpc/issues/34672
With some recent changes in core, now `grpc_ssl_credentials_create` is
guarded by `gpr_once_init`. In our current implementation, The thread
got `gpr_once_init` lock might require GIL lock during the execution of
`grpc_ssl_credentials_create`, which might cause a deadlock if another
thread is holding GIL lock and waiting for `gpr_once_init` lock.

This change adds `with nogil` to calls to native function
`grpc_ssl_credentials_create` to make sure GIL is released before
calling `grpc_ssl_credentials_create`.
<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-10-18 11:52:24 -07:00
Esun Kim 0df9accc5c
[Release] Bump version to 1.59.1 (on v1.59.x branch) (#34620)
Change was created by the release automation script. See go/grpc-release
2023-10-06 16:44:58 -07:00
Richard Belleville 08cc1787de
[Release] Bump v1.59.x version to 1.59.0 (#34534) 2023-09-28 16:08:21 -07:00
Richard Belleville deb0c6257b
[Release] Bump v1.59.x to v1.59.0-pre2 (#34505) 2023-09-27 16:22:17 -07:00
Richard Belleville bb97419977
[Release] Bump 1.59.x version to 1.59.0-pre1 (#34490) 2023-09-26 13:15:41 -07:00
Xuan Wang 4dd42478d5
[Python Misc] Remove fetch_build_eggs & Fix run_test (#34270)
* Remove `fetch_build_eggs` since they're deprecated and those deps will
be installed by `setuptools`.
* Fix indentation on `run_test` so we don't miss `native` test cases.

<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-09-07 12:35:28 -07:00
Xuan Wang c7a1336566
[Python 3.12] Deprecate distutil (#34186)
### Background

* `distutils` is deprecated with removal planned for Python 3.12
([pep-0632](https://peps.python.org/pep-0632/)), thus we're trying to
replace all distutils usage with setuptools.
* Please note that user still have access to `distutils` if setuptools
is installed and `SETUPTOOLS_USE_DISTUTILS` is set to `local` (The
default in setuptools, more details can be found [in this
discussion](https://github.com/pypa/setuptools/issues/2806#issuecomment-1193336591)).

### How we decide the replacement

* We're following setuptools [Porting from Distutils
guide](https://setuptools.pypa.io/en/latest/deprecated/distutils-legacy.html#porting-from-distutils)
when deciding the replacement.

#### Replacement not mentioned in the guide

* Replaced `distutils.utils.get_platform()` with
`sysconfig.get_platform()`.
* Based on the [answer
here](https://stackoverflow.com/questions/71664875/what-is-the-replacement-for-distutils-util-get-platform),
and also checked the document that `sysconfig.get_platform()` is good
enough for our use cases.
* Replaced `DistutilsOptionError` with `OptionError`.
* `setuptools.error` is exporting it as `OptionError` [in the
code](https://github.com/pypa/setuptools/blob/v59.6.0/setuptools/errors.py).
* Upgrade `setuptools` in `test_packages.sh` and changed the version
ping to `59.6.0` in `build_artifact_python.bat`.
* `distutils.errors.*` is not fully re-exported until `59.0.0` (See
[this issue](https://github.com/pypa/setuptools/issues/2698) for more
details).

### Changes not included in this PR

* We're patching some compiler related functions provided by distutils
in our code
([example](ee4efc31c1/src/python/grpcio/_spawn_patch.py (L30))),
but since `setuptools` doesn't have similar interface (See [this issue
for more details](https://github.com/pypa/setuptools/issues/2806)), we
don't have a clear path to replace them yet.


<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-09-06 14:32:30 -07:00
Ben Beasley efc3843fb7
[Test] Do not use importlib find_module API, removed in Python 3.12 (#33506)
This API was [removed in Python
3.12](https://github.com/python/cpython/issues/98040).

Fixes Python 3.12 support in `grpcio` tests.

This is relevant to https://github.com/grpc/grpc/issues/33063.

See also https://github.com/grpc/grpc/pull/33492.

----

I have actually only tested this in a form backported to grpc 1.48.4,
and I am not able to test the change to `bazel/_gevent_test_main.py`
directly. However, the backported form allows me to build grpc 1.48.4
for Fedora Rawhide with Python 3.12, and I believe the version in this
PR to be correct—especially, if CI passes for Python 3.11, I believe
this part of the test code will continue to work in Python 3.12.
2023-09-06 13:13:12 -07:00
Eugene Ostroukhov 4295f0250c
[Interop Test] Update Docker images (#34210)
Co-authored-by: Sergii Tkachenko <hi@sergii.org>
2023-08-31 10:25:21 -07:00
Esun Kim a90f30008d
[Release] Bump version to 1.59.0-dev (on master branch) (#34144)
Change was created by the release automation script. See
go/grpc-release.
2023-08-23 15:53:32 -07:00
Eugene Ostroukhov 1c39493d96
[Interop test] Install curl (#33982)
Curl is required to install Bazel during the build. This also unifies
all build images to use Python base image.
2023-08-03 14:57:41 -07:00
Eugene Ostroukhov 30c68edfcb
[Interop Test] Rollback image changes (#33979)
Fixes build issues
2023-08-03 20:05:48 +00:00
Eugene Ostroukhov c73e743637
[python][interop] Use python:3.9-slim as a baseimage (#33931)
These are officially maintained images with minimal packages needed for running Python
2023-07-31 17:04:22 -07:00
Xuan Wang 82e506c7b2
[python O11Y] Refactor census propagation flow. (#33561)
Refactored OpenCensus context propagation flow, now propagation happens
for each call and context will be automatically propagated from gRPC
server to gRPC client.

We're using `execution_context` in OpenCensus since the context is
related to OpenCensus and it helps wrap `contextVar` for us.

### Testing
* Added a new Bazel test case for context propagation. 

<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-07-28 13:26:13 -07:00
Xuan Wang 96140caba6
[Aio AioRpcError] Allow pickle AioRpcError (#33891)
Fix: #33643.

This change adds `__reduce__` to `AioRpcError` to allow pickle.

### Testing

Added bazel unit test, without this change, test will fail with error:
```
TypeError: AioRpcError.__init__() missing 3 required positional arguments: 'code', 'initial_metadata', and 'trailing_metadata'
```
2023-07-27 12:16:23 -07:00
Richard Belleville 498fc99479
[packaging] Publish xds-protos as part of the standard package pipeline (#33797)
This PR:

- Fixes the xds-protos Python package, which was broken when the `udpa`
submodule was removed
  - This required re-adding the protoc-gen-validate submodule
- Adds non-Bazel tests for xds-protos and all of its dependent packages
- Versions xds-protos the same way as the rest of the Python packages
- Fixes Python 3.11 support in `run_tests.py`, which is necessary for
the testing mentioned above


CC @sergiitk You won't be able to consume this in the interop tests
until it makes it into a release. I'm thinking I'll want to backport
this to the 1.57.x branch to make that happen faster.

CC @drfloob to inform him about the likely backport.
2023-07-25 16:41:02 -07:00
Eugene Ostroukhov 8bdbd96ba8
[Interop] Update docker images (#33847)
This fixes the security issues that were identified.
2023-07-24 16:39:19 -07:00
Vignesh Babu 087b74f739
Revert "Revert "[interop] Add absl dependency to interop server"" #33828 (#33830)
Reverts https://github.com/grpc/grpc/pull/33676

The serve method needs to be called with args. The previous attempt did
not change the signature in commands.py which lead to errors such as
https://screenshot.googleplex.com/6wZVER9ZETMGAmA.

The fix is in
4e211d0291
2023-07-24 12:02:02 -07:00
AJ Heller 42b0d01e68
[Release] Bump version to 1.58.0-dev (on master branch) (#33825)
Change was created by the release automation script. See go/grpc-release
2023-07-24 10:09:08 -07:00
Vignesh Babu c9eeca9681
Revert "[interop] Add absl dependency to interop server" (#33676)
Reverts grpc/grpc#33647
2023-07-12 16:21:46 -07:00
Vignesh Babu fa95c4c439
[interop] Add absl dependency to interop server (#33647)
<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->
2023-07-11 15:02:17 -07:00
Xuan Wang a3fd9e4742
[python O11Y] Add OpenCensus StackDriver exporter (#33384)
Add OC StackDriver exporter.

### Testing
* StackDriver requires integration with GCP thus not included in Bazel
tests, this will only be tested in integration tests.
* Tested locally, was able to publish metrics and spans to GCP:
  * Span:
* <img width="1501" alt="CloudTrace"
src="https://github.com/grpc/grpc/assets/24593237/e6574d05-a6c1-4925-89b1-f9dc1213d9bd">
  * Metric:
*
![CloudMonitoring](https://github.com/grpc/grpc/assets/24593237/2625815d-2512-46d6-b216-61d93b1ad4ed)
2023-06-26 17:26:32 -07:00
Sergii Tkachenko de6ed9ba9f
[Python] Migrate from yapf to black (#33138)
- Switched  from yapf to black
- Reconfigure isort for black
- Resolve black/pylint idiosyncrasies 

Note: I used `--experimental-string-processing` because black was
producing "implicit string concatenation", similar to what described
here: https://github.com/psf/black/issues/1837. While currently this
feature is experimental, it will be enabled by default:
https://github.com/psf/black/issues/2188. After running black with the
new string processing so that the generated code merges these `"hello" "
world"` strings concatenations, then I removed
`--experimental-string-processing` for stability, and regenerated the
code again.

To the reviewer: don't even try to open "Files Changed" tab 😄 It's
better to review commit-by-commit, and ignore `run black and isort`.
2023-06-09 15:08:55 -07:00
Xuan Wang 629b7a14da
[python O11Y] Initial Implementation (#32974)
Testing Command: `bazel test --cache_test_results=no
--test_output=streamed --runs_per_test=1 --test_timeout=10
"//src/python/grpcio_tests/tests/observability:_observability_test"`

### TODO:
 * Better error handling.
2023-06-05 16:11:52 -07:00
Yijie Ma 5a0678001b
[Release] Bump version to 1.57.0-dev (on master branch) (#33311)
Change was created by the release automation script. See
go/grpc-release.
2023-06-01 10:55:31 -07:00
Xuan Wang ad5747693f
Revert "Revert "[reflection] python: reflection response returns dependencies"" (#33089)
Reverts grpc/grpc#33088

The internal test is failing because after the change, transitive
dependencies will be included in response too, thus we need add
`empty2_pb2` to response since it's a dependency of
`empty2_extensions_pb2`.

We already did that in OSS test, we need do the same for internal test
case.
2023-05-18 13:06:49 -07:00
Xuan Wang 1ce3dc63d6
Revert "[reflection] python: reflection response returns dependencies" (#33088)
Reverts grpc/grpc#32909

It's breaking some internal test
(//net/grpc/python:internal_tests/unit/_default_reflection_test), revert
for now to investigate.
2023-05-11 16:32:10 -07:00
Thomas Zeugner 74d00f2c9c
[reflection] python: reflection response returns dependencies (#32909)
Fix #32899 - include all dependency-descriptors in the
ServerReflectionResponse

Using the C# Server-code as blue print:

6bf44820a2/src/Grpc.Reflection/ReflectionServiceImpl.cs (L148)

see also:
   - The cpp-server implementation of this:

d299f5ecce/src/cpp/ext/proto_server_reflection.cc (L208)
  - The go-server implementation of this:

2cd95c7514/reflection/serverreflection.go (L184)
`return s.fileDescWithDependencies(d.ParentFile(), sentFileDescriptors)`

---------

Co-authored-by: Xuan Wang <xuanwn@google.com>
2023-05-11 11:20:14 -07:00
Xuan Wang 7e0e637c5b
[XDS] Start maintenance server before test server (#32907)
Similar change in Java: https://github.com/grpc/grpc-java/pull/10084
2023-04-24 13:16:39 -07:00
Yash Tibrewal dc075539e7
[Release] Bump version to 1.56.0-dev (on master branch) (#32918)
Change was created by the release automation script. See go/grpc-release
2023-04-24 10:47:57 -07:00
Xuan Wang 95c4df5d9b
[Python fix-it][Gevent] Enable gevent _dynamic_stubs_test (#32842)
Re-enable this test since it's now passing after gevent
reimplementation.

Fix: https://github.com/grpc/grpc/issues/15411
2023-04-12 14:03:31 -07:00
Stanley Cheung ec1d75bb0a
[Release process] Bump version to 1.55.0-dev (on master branch) (#32743)
Change was created by the release automation script. See
go/grpc-release.
2023-03-29 11:03:07 -07:00
Craig Tiller 175ccc3a90
Reland global config changes (#32661)
<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-03-27 18:55:24 -07:00
Jan Tattermusch 0c1797cd9f
Revert "[config] Move global config alongside core configuration" (#32659)
Reverts grpc/grpc#30788

(it breaks grpc_objc_bazel_test (see
https://github.com/grpc/grpc/pull/30788#issuecomment-1476372187) and
also seems to be breaking some other internal stuff).
2023-03-20 08:22:29 -07:00
Craig Tiller b7a83305e6
[config] Move global config alongside core configuration (#30788)
This is a big rewrite of global config.

It does a few things, all somewhat intertwined:
1. centralize the list of configuration we have to a yaml file that can
be parsed, and code generated from it
2. add an initialization and a reset stage so that config vars can be
centrally accessed very quickly without the need for caching them
3. makes the syntax more C++ like (less macros!)
4. (optionally) adds absl flags to the OSS build

This first round of changes is intended to keep the system where it is
without major changes. We pick up absl flags to match internal code and
remove one point of deviation - but importantly continue to read from
the environment variables. In doing so we don't force absl flags on our
customers - it's possible to configure grpc without the flags - but
instead allow users that do use absl flags to configure grpc using that
mechanism. Importantly this lets internal customers configure grpc the
same everywhere.

Future changes along this path will be two-fold:
1. Move documentation generation into the code generation step, so that
within the source of truth yaml file we can find all documentation and
data about a configuration knob - eliminating the chance of forgetting
to document something in all the right places.
2. Provide fuzzing over configurations. Currently most config variables
get stashed in static constants across the codebase. To fuzz over these
we'd need a way to reset those cached values between fuzzing rounds,
something that is terrifically difficult right now, but with these
changes should simply be a reset on `ConfigVars`.

<!--

If you know who should review your pull request, please assign it to
that
person, otherwise the pull request would get assigned randomly.

If your pull request is for a specific language, please add the
appropriate
lang label.

-->

---------

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2023-03-17 16:56:45 -07:00
Xuan Wang 0011f7090f
Fix an issue that AIO interceptors can only be called once. (#32641)
Prior to this change, we invoke aycnio interceptors by converting them
to `iterator` first, which means we can only call them once before
they're exhausted.

This PR changes the implementation to use `list`, thus the interceptors
can be called multiple times.
2023-03-16 16:33:17 -07:00
Mike Kruskal 193a3f88ae
Remove references to deprecated syntax field (#32497)
This will be replaced by editions in an upcoming release, but for now
these uses are blocking migration
2023-02-28 17:05:38 -08:00
Richard Belleville e41e41e209
Remove protobuf 4.22.0 from testing (#32442)
This version broke backward compatibility in `plugin_pb2.py`, which is
presumably a relatively minor regression, since we have not yet heard
any complaints about it. This PR:

- Excludes `4.22.0` from installation
- _Includes_ protobuf pre-releases into testing so this can be caught
more quickly in the future.

When bad prereleases are caught, we can exclude them from testing in a
similar manner to this PR. We may eventually want to invest into a
system where we can define these bad versions centrally.
2023-02-22 09:40:48 -08:00
Mark D. Roth 50e6af14ff
Bump dev version to 1.54.0-dev (#32426) 2023-02-21 12:03:19 -08:00
Richard Belleville 190d095a62
Fix Python epoll1 Fork Support (#32196)
* WIP. A seemingly properly failing test

* WIP. Pre-fork handlers now work

* Roughly working.

* Clean up

* Clean up more

* Add to CI

* Format

* Ugh. Remove swap file

* And another

* clean up

* Add copyright

* Format

* Remove another debug line

* Add stub forkable methods

* Remove use of 3.9+ function

* Remove unintentional double copyright

* drfloob review comments

* Only hold lock during Close once

* Create separate job for fork test

* Bump up gdb timeout

* Format
2023-02-02 14:46:16 -08:00
Xuan Wang 843cf42d6a
Catch unprintable application exception (#32208)
* Catch unprintable application exception

* fix sanity

* Remove some files

* Fix typo
2023-01-26 15:01:51 -08:00
Richard Belleville ee1d980832
Revert "Fix test race condition on port binding (#32140)" (#32145)
This reverts commit 5426ef188b.
2023-01-18 14:27:07 -08:00
Richard Belleville 5426ef188b
Fix test race condition on port binding (#32140) 2023-01-18 11:56:22 -08:00
Jan Tattermusch 7fd808f6f9
Bump version to 1.53.0-dev (on master branch) (#32086)
* bump version to 1.53.0-dev

* regenerate projects
2023-01-18 09:41:33 +01:00
Richard Belleville 3a3f7ebc25
Add unit test for #31982 (#32014) 2023-01-05 12:56:36 -08:00
Craig Tiller d410f1d0aa
[surface] Ensure SEND_STATUS & RECV_MESSAGE do not inhabit the same batch (#31554)
Add a check that SEND_STATUS_FROM_SERVER and RECV_MESSAGE are not in the same batch.

This is necessary pre-work for #31204 and implements part of grpc/proposal#336.

Also eliminates fling instead of updating it:

My expectation is nobody has looked at this corner in many years
It's not a benchmark we want: concentrating on a microbenchmark that doesn't include a binding layer caused us to favor designs that emphasized a lightweight core at the expense of a expensive bindings. We should consider the whole.

Co-authored-by: ctiller <ctiller@users.noreply.github.com>
2022-11-11 14:18:29 -08:00
Richard Belleville 51f296b4f8
Bump master branch to 1.52.0-dev (gribkoff) (#31618)
* bump version to 1.52.0-dev

* regenerate projects
2022-11-10 16:11:08 -08:00