You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Drop envoy-data-plane/betterproto dependency from Python SDK (#39213)
EnvoyRateLimiter only needed a handful of protobuf message classes from
envoy-data-plane, which pulls in the outdated betterproto==2.0.0b6 beta
(a protobuf reimplementation) plus grpclib and transitive deps. That pin
is the last blocker stopping Apache Airflow from un-suspending its Beam
provider (apache/airflow#66952), and it forced a Python-version split in
setup.py.
The dependency was already fought rather than used: the RateLimitServiceStub
bridge exists solely because betterproto emits async grpclib stubs that don't
work with Beam's synchronous grpcio, and the wire is plain protobuf over
grpcio regardless.
Replace it with a minimal, self-contained rate_limit.proto compiled to a
checked-in rate_limit_pb2.py (following the existing
proto2_coder_test_messages_pb2.py precedent). Field numbers match Envoy's
rls.proto/ratelimit.proto, so it stays wire-compatible with a real RLS
server. This removes the conflict permanently for every downstream, deletes
the py<3.11 split, and drops betterproto + grpclib from every container image.
New wire-format tests pin the field numbers/enum values so a renumbering
can't silently break live rate limiting (the mock-based tests would not).
Note: the container base_image_requirements.txt files had the two direct
packages removed to stay consistent with setup.py; a full
`generatePythonRequirementsAll` regeneration should follow in CI to also
prune now-orphaned transitives (grpclib, h2, multidict, ...) and refresh pins.
Part of #37854
Unblocks apache/airflow#66952
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGES.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,6 +72,7 @@
72
72
73
73
## New Features / Improvements
74
74
75
+
* (Python) Removed the `envoy-data-plane` (and transitive `betterproto`) dependency; `EnvoyRateLimiter` now uses a small vendored protobuf definition instead, resolving dependency conflicts for downstream projects ([#37854](https://github.com/apache/beam/issues/37854)).
75
76
* Dataflow Runner v2 has been renamed to Dataflow Portable Runner. Please refer to Dataflow [public documentation](https://docs.cloud.google.com/dataflow/docs/runner-v2) on when to enable Portable Runner.([#39000](https://github.com/apache/beam/issues/39000)).
76
77
* (Java) Enabled state tag encoding v2 by default for new Dataflow Streaming Engine jobs. It can be disabled by passing `--experiments=disable_streaming_engine_state_tag_encoding_v2` or `--updateCompatibilityVersion=2.74.0` pipeline option. Note that the tag encoding version cannot change during a job update. Jobs using tag encoding v2 (enabled by default for new jobs on 2.75.0+) cannot be downgraded to Beam versions prior to 2.73.0, as only versions 2.73.0 and later support tag encoding v2. ([#38705](https://github.com/apache/beam/issues/38705)).
77
78
* (Python) Added instrumentation to support off-the-shelf profiling agents when launching Python SDK Harness ([#38853](https://github.com/apache/beam/issues/38853)).
0 commit comments