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 525ab56a5386..a5b3e34571ac 100644 --- a/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/beam/gradle/BeamModulePlugin.groovy @@ -1546,22 +1546,15 @@ class BeamModulePlugin implements Plugin { "PreferJavaTimeOverload", "NonCanonicalType", "Slf4jSignOnlyFormat", - "ThreadPriorityCheck", "UndefinedEquals", "UnescapedEntity", "UnrecognisedJavadocTag", // errorprone 3.2.0+ checks "DirectInvocationOnMock", - "Finalize", "JUnitIncompatibleType", "MockNotUsedInProduction", - "NullableTypeParameter", "NullableWildcard", "SuperCallToObjectMethod", - // intended suppressions emerged in newer protobuf versions - // For backward compatibility. Public method checked in before this check impl - // Possible use in interface subclasses - "ClassInitializationDeadlock", // for encoding efficiency and backward compatibility "EnumOrdinal", // widely used in non-public methods diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleReader.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleReader.java index 158c242262ac..a306a3f03c97 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleReader.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleReader.java @@ -77,6 +77,7 @@ public void close() { } @Override + @SuppressWarnings("Finalize") protected void finalize() { destroySynchronized(); } diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleWriter.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleWriter.java index 0a56281991a6..0e9a0c237120 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleWriter.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/ApplianceShuffleWriter.java @@ -55,6 +55,7 @@ public ApplianceShuffleWriter( } @Override + @SuppressWarnings("Finalize") protected void finalize() { destroy(); } diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/BatchDataflowWorker.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/BatchDataflowWorker.java index feaf5e741396..ebb0b5ff9977 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/BatchDataflowWorker.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/BatchDataflowWorker.java @@ -180,6 +180,7 @@ private static DebugCapture.Manager initializeAndStartDebugCaptureManager( return result; } + @SuppressWarnings("ThreadPriorityCheck") private static Thread startMemoryMonitorThread(MemoryMonitor memoryMonitor) { Thread result = new Thread(memoryMonitor); result.setDaemon(true); diff --git a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/windmill/WindmillServerBase.java b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/windmill/WindmillServerBase.java index 20ea634a65e7..da439311004e 100644 --- a/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/windmill/WindmillServerBase.java +++ b/runners/google-cloud-dataflow-java/worker/src/main/java/org/apache/beam/runners/dataflow/worker/windmill/WindmillServerBase.java @@ -45,6 +45,7 @@ protected WindmillServerBase(String host) { } @Override + @SuppressWarnings("Finalize") protected void finalize() { destroy(nativePointer); } diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/UnboundedSource.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/UnboundedSource.java index f38715b37e1e..0e72854abbf9 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/io/UnboundedSource.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/io/UnboundedSource.java @@ -145,6 +145,7 @@ public interface CheckpointMark { */ void finalizeCheckpoint() throws IOException; + @SuppressWarnings("ClassInitializationDeadlock") NoopCheckpointMark NOOP_CHECKPOINT_MARK = new NoopCheckpointMark(); /** A checkpoint mark that does nothing when finalized. */ diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignature.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignature.java index c8315e140b50..83c2a67655bd 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignature.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignature.java @@ -284,6 +284,7 @@ default boolean observesWindow() { } /** A descriptor for an optional parameter of the {@link DoFn.ProcessElement} method. */ + @SuppressWarnings("ClassInitializationDeadlock") public abstract static class Parameter { // Private as no extensions other than those nested here are permitted diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/UnboundedScheduledExecutorService.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/UnboundedScheduledExecutorService.java index 6b48c08bca0c..698a730c7c9e 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/UnboundedScheduledExecutorService.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/UnboundedScheduledExecutorService.java @@ -77,6 +77,7 @@ public final class UnboundedScheduledExecutorService implements ScheduledExecuto value = "EQ_COMPARETO_USE_OBJECT_EQUALS", justification = "Default equals/hashCode is what we want since two scheduled tasks are only equivalent if they point to the same instance.") + @SuppressWarnings("NullableTypeParameter") final class ScheduledFutureTask<@Nullable @KeyForBottom V> extends FutureTask implements RunnableScheduledFuture { @@ -373,6 +374,7 @@ public void execute(Runnable command) { } @Override + @SuppressWarnings("NullableTypeParameter") public Future<@Nullable ?> submit(Runnable command) { if (command == null) { throw new NullPointerException(); @@ -384,7 +386,7 @@ public void execute(Runnable command) { @Override /* Ignore improper flag since FB detects that ScheduledExecutorService can't have nullable V. */ - @SuppressWarnings("override.return") + @SuppressWarnings({"override.return", "NullableTypeParameter"}) public <@Nullable @KeyForBottom T> Future submit(Runnable command, T result) { if (command == null) { throw new NullPointerException(); @@ -396,7 +398,7 @@ public void execute(Runnable command) { @Override /* Ignore improper flag since FB detects that ScheduledExecutorService can't have nullable V. */ - @SuppressWarnings({"override.param", "override.return"}) + @SuppressWarnings({"override.param", "override.return", "NullableTypeParameter"}) public <@Nullable @KeyForBottom T> Future submit(Callable command) { if (command == null) { throw new NullPointerException(); @@ -436,6 +438,7 @@ public void execute(Runnable command) { } @Override + @SuppressWarnings("NullableTypeParameter") public ScheduledFuture<@Nullable ?> schedule(Runnable command, long delay, TimeUnit unit) { if (command == null || unit == null) { throw new NullPointerException(); @@ -448,7 +451,7 @@ public void execute(Runnable command) { @Override /* Ignore improper flag since FB detects that ScheduledExecutorService can't have nullable V. */ - @SuppressWarnings({"override.param", "override.return"}) + @SuppressWarnings({"override.param", "override.return", "NullableTypeParameter"}) public <@Nullable @KeyForBottom V> ScheduledFuture schedule( Callable callable, long delay, TimeUnit unit) { if (callable == null || unit == null) { @@ -460,6 +463,7 @@ public void execute(Runnable command) { } @Override + @SuppressWarnings("NullableTypeParameter") public ScheduledFuture<@Nullable ?> scheduleAtFixedRate( Runnable command, long initialDelay, long period, TimeUnit unit) { if (command == null || unit == null) { @@ -476,6 +480,7 @@ public void execute(Runnable command) { } @Override + @SuppressWarnings("NullableTypeParameter") public ScheduledFuture<@Nullable ?> scheduleWithFixedDelay( Runnable command, long initialDelay, long delay, TimeUnit unit) { if (command == null || unit == null) { @@ -491,6 +496,7 @@ public void execute(Runnable command) { return task; } + @SuppressWarnings("NullableTypeParameter") private <@Nullable @KeyForBottom T> void runNowOrScheduleInTheFuture( ScheduledFutureTask task) { long nanosToWait = LongMath.saturatedSubtract(task.time, clock.nanoTime()); diff --git a/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/status/BeamFnStatusClient.java b/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/status/BeamFnStatusClient.java index 7ad9b4d74c9e..8b13465d7d85 100644 --- a/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/status/BeamFnStatusClient.java +++ b/sdks/java/harness/src/main/java/org/apache/beam/fn/harness/status/BeamFnStatusClient.java @@ -59,6 +59,7 @@ public class BeamFnStatusClient implements AutoCloseable { private final MemoryMonitor memoryMonitor; private final Cache cache; + @SuppressWarnings("ThreadPriorityCheck") @SuppressFBWarnings("SC_START_IN_CTOR") // for memory monitor thread public BeamFnStatusClient( ApiServiceDescriptor apiServiceDescriptor, diff --git a/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/catalog/hiveutils/ScriptRunner.java b/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/catalog/hiveutils/ScriptRunner.java index d77cf0bf74c7..261ce25148c6 100644 --- a/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/catalog/hiveutils/ScriptRunner.java +++ b/sdks/java/io/iceberg/src/test/java/org/apache/beam/sdk/io/iceberg/catalog/hiveutils/ScriptRunner.java @@ -34,7 +34,7 @@ * href="https://github.com/apache/iceberg/blob/main/hive-metastore/src/test/java/org/apache/iceberg/hive/ScriptRunner.java">Iceberg's * integration testing */ -@SuppressWarnings({"OperatorPrecedence", "DefaultCharset"}) +@SuppressWarnings({"OperatorPrecedence", "DefaultCharset", "ThreadPriorityCheck"}) public class ScriptRunner { private static final String DEFAULT_DELIMITER = ";"; diff --git a/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaIO.java b/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaIO.java index 7cb5b8504854..518319a38e32 100644 --- a/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaIO.java +++ b/sdks/java/io/kafka/src/main/java/org/apache/beam/sdk/io/kafka/KafkaIO.java @@ -3848,6 +3848,7 @@ public void populateDisplayData(DisplayData.Builder builder) { } } + @SuppressWarnings("NullableTypeParameter") private static class NullOnlyCoder<@Nullable T> extends AtomicCoder { @Override public void encode(T value, OutputStream outStream) { diff --git a/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Cache.java b/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Cache.java index 6bbbb41de99a..9e88bda490f3 100644 --- a/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Cache.java +++ b/sdks/java/io/rrio/src/main/java/org/apache/beam/io/requestresponse/Cache.java @@ -113,6 +113,7 @@ private Pair( * does not enforce {@link Coder#verifyDeterministic} and defers to the user to determine whether * to enforce this given the cache implementation. */ + @SuppressWarnings("NullableTypeParameter") static < RequestT, @Nullable ResponseT, @@ -138,6 +139,7 @@ private Pair( * href="https://redis.io/docs/get-started/faq/">Redis FAQ for more information on important * considerations when using this method to achieve cache reads. */ + @SuppressWarnings("NullableTypeParameter") static PTransform, Result>> readUsingRedis( RedisClient client, @@ -178,6 +180,7 @@ PTransform>, Result> * href="https://redis.io/docs/get-started/faq/">Redis FAQ for more information on important * considerations when using this method to achieve cache writes. */ + @SuppressWarnings("NullableTypeParameter") static PTransform>, Result>> writeUsingRedis( @@ -217,6 +220,7 @@ Write write(Duration expiry) { } /** Reads associated {@link RequestT} {@link ResponseT} using a {@link RedisClient}. */ + @SuppressWarnings("NullableTypeParameter") static class Read implements Caller>, SetupTeardown {