Skip to content

Commit 914760d

Browse files
Merge branch 'master' into fix-pubsub-ordering-key
2 parents b44f8e0 + c01ceea commit 914760d

85 files changed

Lines changed: 5607 additions & 11137 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.asf.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ github:
5151

5252
protected_branches:
5353
master: {}
54+
release-2.74.0-postrelease: {}
5455
release-2.74: {}
5556
release-2.73.0-postrelease: {}
5657
release-2.73: {}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"comment": "Modify this file in a trivial way to cause this test suite to run",
3-
"modification": 2
3+
"modification": 3
44
}

.github/workflows/republish_released_docker_containers.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ on:
3232
- cron: "0 6 * * 1"
3333
env:
3434
docker_registry: gcr.io
35-
release: "${{ github.event.inputs.RELEASE || '2.73.0' }}"
36-
rc: "${{ github.event.inputs.RC || '5' }}"
35+
release: "${{ github.event.inputs.RELEASE || '2.74.0' }}"
36+
rc: "${{ github.event.inputs.RC || '3' }}"
3737

3838
jobs:
3939

CHANGES.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,15 @@
6969

7070
## New Features / Improvements
7171

72+
* X feature added (Java/Python) ([#X](https://github.com/apache/beam/issues/X)).
7273
* (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)).
7374

7475
## Breaking Changes
7576

7677
* X behavior was changed ([#X](https://github.com/apache/beam/issues/X)).
78+
* (Python) Typehints of dataclass fields are honored during type inferences. To restore the behavior of fallback-to-any,
79+
use pipeline option `--exclude_infer_dataclass_field_type` ([#38797](https://github.com/apache/beam/issues/38797)).
80+
However fixing forward is recommended.
7781

7882
## Deprecations
7983

@@ -82,6 +86,7 @@
8286
## Bugfixes
8387

8488
* Fixed X (Java/Python) ([#X](https://github.com/apache/beam/issues/X)).
89+
* Fixed IcebergIO writing manifest column bounds padded with trailing `0x00` bytes, which broke equality predicate pushdown in some query engines (Java) ([#38580](https://github.com/apache/beam/issues/38580)).
8590

8691
## Security Fixes
8792

@@ -92,7 +97,7 @@
9297
[comment]: # ( When updating known issues after release, make sure also update website blog in website/www/site/content/blog.)
9398
* ([#X](https://github.com/apache/beam/issues/X)).
9499

95-
# [2.74.0] - 2026-XX-xx
100+
# [2.74.0] - 2026-06-02
96101

97102
## Highlights
98103

@@ -101,7 +106,7 @@
101106
## I/Os
102107

103108
* IcebergIO: support declaring a table's sort order on dynamic table creation via the new `sort_fields` config ([#38269](https://github.com/apache/beam/issues/38269)).
104-
* IcebergIO: support writing with hash distribution mode, and with autosharding ([#38061](https://github.com/apache/beam/issues/38061))).
109+
* IcebergIO: support writing with hash distribution mode, and with autosharding ([#38061](https://github.com/apache/beam/issues/38061)).
105110

106111
## New Features / Improvements
107112

@@ -131,7 +136,6 @@
131136

132137
* Fixed BigQueryEnrichmentHandler batch mode dropping earlier requests when multiple requests share the same enrichment key (Python) ([#38035](https://github.com/apache/beam/issues/38035)).
133138
* Added `max_batch_duration_secs` passthrough support in Python Enrichment BigQuery and CloudSQL handlers so batching duration can be forwarded to `BatchElements` ([#38243](https://github.com/apache/beam/issues/38243)).
134-
* Fixed IcebergIO writing manifest column bounds padded with trailing `0x00` bytes, which broke equality predicate pushdown in some query engines (Java) ([#38580](https://github.com/apache/beam/issues/38580)).
135139

136140
# [2.73.0] - 2026-04-29
137141

buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -609,14 +609,14 @@ class BeamModulePlugin implements Plugin<Project> {
609609
def dbcp2_version = "2.9.0"
610610
def errorprone_version = "2.31.0"
611611
// [bomupgrader] determined by: com.google.api:gax, consistent with: google_cloud_platform_libraries_bom
612-
def gax_version = "2.79.0"
612+
def gax_version = "2.80.0"
613613
def google_ads_version = "33.0.0"
614614
def google_clients_version = "2.0.0"
615615
def google_cloud_bigdataoss_version = "3.1.16"
616616
def google_code_gson_version = "2.10.1"
617617
def google_oauth_clients_version = "1.34.1"
618618
// [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom
619-
def grpc_version = "1.80.0"
619+
def grpc_version = "1.81.0"
620620
def guava_version = "33.1.0-jre"
621621
def hadoop_version = "3.4.2"
622622
def hamcrest_version = "2.1"
@@ -632,9 +632,9 @@ class BeamModulePlugin implements Plugin<Project> {
632632
def log4j2_version = "2.25.4"
633633
def nemo_version = "0.1"
634634
// [bomupgrader] determined by: io.grpc:grpc-netty, consistent with: google_cloud_platform_libraries_bom
635-
def netty_version = "4.1.130.Final"
635+
def netty_version = "4.1.132.Final"
636636
// [bomupgrader] determined by: io.opentelemetry:opentelemetry-sdk, consistent with: google_cloud_platform_libraries_bom
637-
def opentelemetry_version = "1.56.0"
637+
def opentelemetry_version = "1.57.0"
638638
def opentelemetry_contrib_version = "1.52.0"
639639
def postgres_version = "42.6.2"
640640
// [bomupgrader] determined by: com.google.protobuf:protobuf-java, consistent with: google_cloud_platform_libraries_bom
@@ -761,14 +761,14 @@ class BeamModulePlugin implements Plugin<Project> {
761761
google_cloud_core_grpc : "com.google.cloud:google-cloud-core-grpc", // google_cloud_platform_libraries_bom sets version
762762
google_cloud_datacatalog_v1beta1 : "com.google.cloud:google-cloud-datacatalog", // google_cloud_platform_libraries_bom sets version
763763
google_cloud_dataflow_java_proto_library_all: "com.google.cloud.dataflow:google-cloud-dataflow-java-proto-library-all:0.5.160304",
764-
google_cloud_datastore_v1_proto_client : "com.google.cloud.datastore:datastore-v1-proto-client:2.40.0", // [bomupgrader] sets version
764+
google_cloud_datastore_v1_proto_client : "com.google.cloud.datastore:datastore-v1-proto-client:3.0.0", // [bomupgrader] sets version
765765
google_cloud_firestore : "com.google.cloud:google-cloud-firestore", // google_cloud_platform_libraries_bom sets version
766766
google_cloud_kms : "com.google.cloud:google-cloud-kms", // google_cloud_platform_libraries_bom sets version
767767
google_cloud_logging : "com.google.cloud:google-cloud-logging", // google_cloud_platform_libraries_bom sets version
768768
google_cloud_pubsub : "com.google.cloud:google-cloud-pubsub", // google_cloud_platform_libraries_bom sets version
769769
// [bomupgrader] the BOM version is set by scripts/tools/bomupgrader.py. If update manually, also update
770770
// libraries-bom version on sdks/java/container/license_scripts/dep_urls_java.yaml
771-
google_cloud_platform_libraries_bom : "com.google.cloud:libraries-bom:26.80.0",
771+
google_cloud_platform_libraries_bom : "com.google.cloud:libraries-bom:26.83.0",
772772
google_cloud_secret_manager : "com.google.cloud:google-cloud-secretmanager", // google_cloud_platform_libraries_bom sets version
773773
google_cloud_spanner : "com.google.cloud:google-cloud-spanner", // google_cloud_platform_libraries_bom sets version
774774
google_cloud_storage : "com.google.cloud:google-cloud-storage", // google_cloud_platform_libraries_bom sets version

buildSrc/src/main/groovy/org/apache/beam/gradle/Repositories.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class Repositories {
3131
}
3232

3333
project.repositories {
34-
maven { url project.offlineRepositoryRoot }
34+
maven { url project.rootProject.file(project.offlineRepositoryRoot) }
3535

3636
// To run gradle in offline mode, one must first invoke
3737
// 'updateOfflineRepository' to create an offline repo
@@ -86,7 +86,7 @@ class Repositories {
8686
maven { url "https://plugins.gradle.org/m2/" }
8787
maven { url "https://repo.spring.io/plugins-release" }
8888
maven { url "https://packages.confluent.io/maven/" }
89-
maven { url project.offlineRepositoryRoot }
89+
maven { url project.rootProject.file(project.offlineRepositoryRoot) }
9090
}
9191
includeSources = false
9292
includeJavadocs = false

runners/google-cloud-dataflow-java/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ evaluationDependsOn(":sdks:java:container:java11")
5252

5353
ext.dataflowLegacyEnvironmentMajorVersion = '8'
5454
ext.dataflowFnapiEnvironmentMajorVersion = '8'
55-
ext.dataflowLegacyContainerVersion = 'beam-master-20260513'
56-
ext.dataflowFnapiContainerVersion = 'beam-master-20260513'
55+
ext.dataflowLegacyContainerVersion = 'beam-master-20260601'
56+
ext.dataflowFnapiContainerVersion = 'beam-master-20260601'
5757
ext.dataflowContainerBaseRepository = 'gcr.io/cloud-dataflow/v1beta3'
5858

5959
processResources {

runners/google-cloud-dataflow-java/src/main/java/org/apache/beam/runners/dataflow/DataflowRunner.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import java.util.ArrayList;
4949
import java.util.Arrays;
5050
import java.util.Collections;
51+
import java.util.HashMap;
5152
import java.util.HashSet;
5253
import java.util.List;
5354
import java.util.Map;
@@ -1327,6 +1328,21 @@ public DataflowPipelineJob run(Pipeline pipeline) {
13271328
if (!ExperimentalOptions.hasExperiment(options, "disable_projection_pushdown")) {
13281329
ProjectionPushdownOptimizer.optimize(pipeline);
13291330
}
1331+
SdkHarnessOptions sdkHarnessOptions = options.as(SdkHarnessOptions.class);
1332+
if (ExperimentalOptions.hasExperiment(options, "enable_otel_defaults")) {
1333+
Map<String, String> openTelemetryProperties = sdkHarnessOptions.getOpenTelemetryProperties();
1334+
if (openTelemetryProperties == null) {
1335+
openTelemetryProperties = new HashMap<>();
1336+
openTelemetryProperties.put("google.cloud.project", options.getProject());
1337+
openTelemetryProperties.put(
1338+
"otel.exporter.otlp.endpoint", "https://telemetry.googleapis.com");
1339+
openTelemetryProperties.put("otel.traces.exporter", "otlp");
1340+
openTelemetryProperties.put("otel.java.global-autoconfigure.enabled", "true");
1341+
openTelemetryProperties.put("otel.traces.sampler.arg", "0.01");
1342+
openTelemetryProperties.put("otel.service.name", options.getAppName());
1343+
sdkHarnessOptions.setOpenTelemetryProperties(openTelemetryProperties);
1344+
}
1345+
}
13301346

13311347
LOG.info(
13321348
"Executing pipeline on the Dataflow Service, which will have billing implications "

runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/StreamingDataflowWorker.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
import org.apache.beam.sdk.io.gcp.bigquery.BigQuerySinkMetrics;
116116
import org.apache.beam.sdk.metrics.MetricsEnvironment;
117117
import org.apache.beam.sdk.options.ExperimentalOptions;
118+
import org.apache.beam.sdk.options.SdkHarnessOptions;
118119
import org.apache.beam.sdk.util.construction.CoderTranslation;
119120
import org.apache.beam.sdk.values.WindowedValues;
120121
import org.apache.beam.vendor.grpc.v1p69p0.io.grpc.auth.MoreCallCredentials;
@@ -1042,6 +1043,18 @@ public static void main(String[] args) throws Exception {
10421043
WindowedValues.FullWindowedValueCoder.setMetadataSupported();
10431044
}
10441045

1046+
SdkHarnessOptions sdkHarnessOptions = options.as(SdkHarnessOptions.class);
1047+
Map<String, String> openTelemetryProperties = sdkHarnessOptions.getOpenTelemetryProperties();
1048+
if (openTelemetryProperties != null && !openTelemetryProperties.isEmpty()) {
1049+
openTelemetryProperties.forEach(
1050+
(k, v) -> {
1051+
if (k != null && v != null) {
1052+
System.setProperty(k, v);
1053+
}
1054+
});
1055+
LOG.info("Enabled Open Telemetry with properties: {}", openTelemetryProperties);
1056+
}
1057+
10451058
LOG.debug("Creating StreamingDataflowWorker from options: {}", options);
10461059
StreamingDataflowWorker worker = StreamingDataflowWorker.fromOptions(options);
10471060

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
package org.apache.beam.runners.dataflow.worker.streaming;
19+
20+
/**
21+
* A handle to use when requesting pulling more work from @BoundedQueueExecutor
22+
* via @BoundedQueueExecutor.pollWork
23+
*/
24+
public interface BoundedQueueExecutorWorkHandle {}

0 commit comments

Comments
 (0)