This is an automated email from the ASF dual-hosted git repository.
kenn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 0fb490f927f [ErrorProne] Enable EmptyCatch Error Prone check and
document ignored exceptions (#37754)
0fb490f927f is described below
commit 0fb490f927fbb6c77aca968cf10f9d553192cd40
Author: Radosław Stankiewicz <[email protected]>
AuthorDate: Tue Mar 17 15:12:20 2026 +0100
[ErrorProne] Enable EmptyCatch Error Prone check and document ignored
exceptions (#37754)
---
buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy | 1 -
.../apache/beam/examples/twitterstreamgenerator/TwitterConnection.java | 1 +
.../java/org/apache/beam/runners/flink/metrics/MetricsAccumulator.java | 1 +
.../java/src/main/java/org/apache/beam/runners/prism/PrismExecutor.java | 2 ++
.../java/org/apache/beam/sdk/extensions/gcp/util/GceMetadataUtil.java | 1 +
.../org/apache/beam/sdk/io/aws2/common/AsyncBatchWriteHandlerTest.java | 1 +
.../apache/beam/sdk/io/gcp/bigtable/changestreams/dao/DaoFactory.java | 1 +
.../src/main/java/org/apache/beam/sdk/io/gcp/healthcare/FhirIO.java | 1 +
.../src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsub.java | 1 +
.../main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsubSignal.java | 1 +
.../src/main/java/org/apache/beam/sdk/io/iceberg/FilterUtils.java | 1 +
.../io/rrio/src/main/java/org/apache/beam/io/requestresponse/Call.java | 2 ++
.../rrio/src/main/java/org/apache/beam/io/requestresponse/Repeater.java | 1 +
.../apache/beam/io/requestresponse/EchoGRPCCallerWithSetupTeardown.java | 1 +
14 files changed, 15 insertions(+), 1 deletion(-)
diff --git
a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
index 2705752e26b..9e29dd9fc2a 100644
--- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
+++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy
@@ -1538,7 +1538,6 @@ class BeamModulePlugin implements Plugin<Project> {
"ComparableType",
"DoNotMockAutoValue",
"EmptyBlockTag",
- "EmptyCatch",
"EqualsGetClass",
"EqualsUnsafeCast",
"EscapedEntity",
diff --git
a/examples/java/twitter/src/main/java/org/apache/beam/examples/twitterstreamgenerator/TwitterConnection.java
b/examples/java/twitter/src/main/java/org/apache/beam/examples/twitterstreamgenerator/TwitterConnection.java
index 11453cd4785..0e12204deac 100644
---
a/examples/java/twitter/src/main/java/org/apache/beam/examples/twitterstreamgenerator/TwitterConnection.java
+++
b/examples/java/twitter/src/main/java/org/apache/beam/examples/twitterstreamgenerator/TwitterConnection.java
@@ -73,6 +73,7 @@ class TwitterConnection {
try {
queue.offer(status);
} catch (Exception ignored) {
+ // Ignore exceptions during enqueueing.
}
}
diff --git
a/runners/flink/src/main/java/org/apache/beam/runners/flink/metrics/MetricsAccumulator.java
b/runners/flink/src/main/java/org/apache/beam/runners/flink/metrics/MetricsAccumulator.java
index 458f7d82e5f..19f864c301d 100644
---
a/runners/flink/src/main/java/org/apache/beam/runners/flink/metrics/MetricsAccumulator.java
+++
b/runners/flink/src/main/java/org/apache/beam/runners/flink/metrics/MetricsAccumulator.java
@@ -56,6 +56,7 @@ public class MetricsAccumulator implements
SimpleAccumulator<MetricsContainerSte
try {
super.clone();
} catch (CloneNotSupportedException ignored) {
+ // Ignore CloneNotSupportedException
}
MetricsAccumulator metricsAccumulator = new MetricsAccumulator();
metricsAccumulator.getLocalValue().updateAll(this.getLocalValue());
diff --git
a/runners/prism/java/src/main/java/org/apache/beam/runners/prism/PrismExecutor.java
b/runners/prism/java/src/main/java/org/apache/beam/runners/prism/PrismExecutor.java
index 87551cfc03c..0e13b526b0f 100644
---
a/runners/prism/java/src/main/java/org/apache/beam/runners/prism/PrismExecutor.java
+++
b/runners/prism/java/src/main/java/org/apache/beam/runners/prism/PrismExecutor.java
@@ -79,6 +79,7 @@ abstract class PrismExecutor {
try {
boolean ignored = executorService.awaitTermination(5000L,
TimeUnit.MILLISECONDS);
} catch (InterruptedException ignored) {
+ // Ignore InterruptedException during shutdown.
}
if (process == null) {
return;
@@ -90,6 +91,7 @@ abstract class PrismExecutor {
try {
process.waitFor();
} catch (InterruptedException ignored) {
+ // Ignore InterruptedException during shutdown.
}
}
diff --git
a/sdks/java/extensions/google-cloud-platform-core/src/main/java/org/apache/beam/sdk/extensions/gcp/util/GceMetadataUtil.java
b/sdks/java/extensions/google-cloud-platform-core/src/main/java/org/apache/beam/sdk/extensions/gcp/util/GceMetadataUtil.java
index f9d8e5ac350..aad26a1c30c 100644
---
a/sdks/java/extensions/google-cloud-platform-core/src/main/java/org/apache/beam/sdk/extensions/gcp/util/GceMetadataUtil.java
+++
b/sdks/java/extensions/google-cloud-platform-core/src/main/java/org/apache/beam/sdk/extensions/gcp/util/GceMetadataUtil.java
@@ -60,6 +60,7 @@ public class GceMetadataUtil {
}
}
} catch (IOException ignored) {
+ LOG.debug("Failed to fetch GCE metadata.", ignored);
}
// The return value can be an empty string, which may mean it's running on
a non DataflowRunner.
diff --git
a/sdks/java/io/amazon-web-services2/src/test/java/org/apache/beam/sdk/io/aws2/common/AsyncBatchWriteHandlerTest.java
b/sdks/java/io/amazon-web-services2/src/test/java/org/apache/beam/sdk/io/aws2/common/AsyncBatchWriteHandlerTest.java
index 056d856e442..091872a8747 100644
---
a/sdks/java/io/amazon-web-services2/src/test/java/org/apache/beam/sdk/io/aws2/common/AsyncBatchWriteHandlerTest.java
+++
b/sdks/java/io/amazon-web-services2/src/test/java/org/apache/beam/sdk/io/aws2/common/AsyncBatchWriteHandlerTest.java
@@ -253,6 +253,7 @@ public class AsyncBatchWriteHandlerTest {
fun.run();
return;
} catch (AssertionError | InterruptedException t) {
+ // Ignore and try again.
}
}
fun.run();
diff --git
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/changestreams/dao/DaoFactory.java
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/changestreams/dao/DaoFactory.java
index c4d83c298c8..1545c8eb86d 100644
---
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/changestreams/dao/DaoFactory.java
+++
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigtable/changestreams/dao/DaoFactory.java
@@ -72,6 +72,7 @@ public class DaoFactory implements Serializable,
AutoCloseable {
BigtableChangeStreamAccessor.getOrCreate(changeStreamConfig).close();
}
} catch (Exception ignored) {
+ // Ignore exceptions on close.
}
}
diff --git
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/FhirIO.java
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/FhirIO.java
index 5b8eda8d634..197fcab3ab2 100644
---
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/FhirIO.java
+++
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/healthcare/FhirIO.java
@@ -1540,6 +1540,7 @@ public class FhirIO {
try {
statusCode = Integer.parseInt(status.substring(0, 3));
} catch (IndexOutOfBoundsException | NumberFormatException ignored) {
+ // Ignore parsing exception so we can return the default 404
}
return statusCode;
}
diff --git
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsub.java
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsub.java
index 2736424e8dc..a55de012d38 100644
---
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsub.java
+++
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsub.java
@@ -340,6 +340,7 @@ public class TestPubsub implements TestRule {
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
+ // Ignore interrupt and continue polling.
}
}
diff --git
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsubSignal.java
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsubSignal.java
index 1d430ac4a6b..f11ba9555a8 100644
---
a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsubSignal.java
+++
b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/pubsub/TestPubsubSignal.java
@@ -323,6 +323,7 @@ public class TestPubsubSignal implements TestRule {
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
+ // Ignore interrupt and continue polling.
}
}
diff --git
a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/FilterUtils.java
b/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/FilterUtils.java
index 855fcf7d1e1..947c14f2d1d 100644
---
a/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/FilterUtils.java
+++
b/sdks/java/io/iceberg/src/main/java/org/apache/beam/sdk/io/iceberg/FilterUtils.java
@@ -400,6 +400,7 @@ public class FilterUtils {
datetime = LocalDateTime.parse(value, formatter);
return datetime;
} catch (DateTimeParseException ignored) {
+ // Ignore and try the next formatter.
}
}
return LocalDateTime.of(LocalDate.parse(value), LocalTime.MIN);
diff --git
a/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Call.java
b/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Call.java
index 07aa66cbe2f..b515957459b 100644
---
a/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Call.java
+++
b/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Call.java
@@ -297,6 +297,7 @@ class Call<RequestT, ResponseT> extends
PTransform<PCollection<RequestT>, Result
try {
boolean ignored = executor.awaitTermination(3L, TimeUnit.SECONDS);
} catch (InterruptedException ignored) {
+ // Ignore the interrupt during teardown.
}
}
@@ -352,6 +353,7 @@ class Call<RequestT, ResponseT> extends
PTransform<PCollection<RequestT>, Result
incIfPresent(sleeperCounter);
sleeper.sleep(backOff.nextBackOffMillis());
} catch (InterruptedException ignored) {
+ // Ignore the interrupt and try again.
}
}
}
diff --git
a/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Repeater.java
b/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Repeater.java
index e9a7666d2a1..0627d77fed2 100644
---
a/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Repeater.java
+++
b/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Repeater.java
@@ -117,6 +117,7 @@ abstract class Repeater<InputT, OutputT> {
}
latestError = Optional.of(e);
} catch (InterruptedException ignored) {
+ // Ignore the interrupt and try again.
}
incIfPresent(getBackoffCounter());
waitFor = getBackOff().nextBackOffMillis();
diff --git
a/sdks/java/io/rrio/src/test/java/org/apache/beam/io/requestresponse/EchoGRPCCallerWithSetupTeardown.java
b/sdks/java/io/rrio/src/test/java/org/apache/beam/io/requestresponse/EchoGRPCCallerWithSetupTeardown.java
index 22e2ff9b1a1..b2c2b634bb0 100644
---
a/sdks/java/io/rrio/src/test/java/org/apache/beam/io/requestresponse/EchoGRPCCallerWithSetupTeardown.java
+++
b/sdks/java/io/rrio/src/test/java/org/apache/beam/io/requestresponse/EchoGRPCCallerWithSetupTeardown.java
@@ -90,6 +90,7 @@ class EchoGRPCCallerWithSetupTeardown implements
Caller<EchoRequest, EchoRespons
try {
boolean ignored = cachedManagedChannel.awaitTermination(1L,
TimeUnit.SECONDS);
} catch (InterruptedException ignored) {
+ // Ignore the InterruptedException on shutdown.
}
}
}