diff --git a/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/SchemasUtils.java b/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/SchemasUtils.java index c02b1a60b044..8d26497da30c 100644 --- a/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/SchemasUtils.java +++ b/examples/java/src/main/java/org/apache/beam/examples/complete/datatokenization/utils/SchemasUtils.java @@ -21,6 +21,7 @@ import static org.apache.beam.vendor.guava.v32_1_2_jre.com.google.common.base.Preconditions.checkArgument; import com.google.api.services.bigquery.model.TableSchema; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.io.InputStream; import java.io.Reader; @@ -53,6 +54,11 @@ "argument", "return" }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SchemasUtils { /* Logger for class.*/ diff --git a/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/CallingSubProcessUtils.java b/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/CallingSubProcessUtils.java index 3abbb25d7c79..4ae72e08135f 100644 --- a/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/CallingSubProcessUtils.java +++ b/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/CallingSubProcessUtils.java @@ -17,6 +17,7 @@ */ package org.apache.beam.examples.subprocess.utils; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -88,6 +89,11 @@ private static void releaseSemaphore(String binaryName) throws IllegalStateExcep } /** Permit class for access to worker cpu resources. */ + @SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public static class Permit implements AutoCloseable { private String binaryName; diff --git a/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/ExecutableFile.java b/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/ExecutableFile.java index 1b157d237429..31e4962e7c2b 100644 --- a/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/ExecutableFile.java +++ b/examples/java/src/main/java/org/apache/beam/examples/subprocess/utils/ExecutableFile.java @@ -17,6 +17,7 @@ */ package org.apache.beam.examples.subprocess.utils; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.apache.beam.examples.subprocess.configuration.SubProcessConfiguration; import org.apache.beam.sdk.coders.DefaultCoder; import org.apache.beam.sdk.extensions.avro.coders.AvroCoder; @@ -26,6 +27,11 @@ @SuppressWarnings({ "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class ExecutableFile { String fileName; diff --git a/it/clickhouse/src/main/java/org/apache/beam/it/clickhouse/ClickHouseResourceManager.java b/it/clickhouse/src/main/java/org/apache/beam/it/clickhouse/ClickHouseResourceManager.java index f3250877c9b3..a4e4bf95a605 100644 --- a/it/clickhouse/src/main/java/org/apache/beam/it/clickhouse/ClickHouseResourceManager.java +++ b/it/clickhouse/src/main/java/org/apache/beam/it/clickhouse/ClickHouseResourceManager.java @@ -17,6 +17,7 @@ */ package org.apache.beam.it.clickhouse; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; @@ -44,6 +45,11 @@ * *

The class is thread-safe. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class ClickHouseResourceManager extends TestContainerResourceManager> implements ResourceManager { diff --git a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigtable/BigtableResourceManager.java b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigtable/BigtableResourceManager.java index fd968eb12f3e..ffe0fd8cdc44 100644 --- a/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigtable/BigtableResourceManager.java +++ b/it/google-cloud-platform/src/main/java/org/apache/beam/it/gcp/bigtable/BigtableResourceManager.java @@ -49,6 +49,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; @@ -77,6 +78,11 @@ * *

The class is thread-safe. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class BigtableResourceManager implements ResourceManager { private static final Logger LOG = LoggerFactory.getLogger(BigtableResourceManager.class); diff --git a/it/splunk/src/main/java/org/apache/beam/it/splunk/SplunkResourceManager.java b/it/splunk/src/main/java/org/apache/beam/it/splunk/SplunkResourceManager.java index e4aaa6ae0378..73ffd9da09f2 100644 --- a/it/splunk/src/main/java/org/apache/beam/it/splunk/SplunkResourceManager.java +++ b/it/splunk/src/main/java/org/apache/beam/it/splunk/SplunkResourceManager.java @@ -25,6 +25,7 @@ import com.splunk.ResultsReader; import com.splunk.ResultsReaderXml; import com.splunk.ServiceArgs; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.time.Duration; @@ -60,6 +61,11 @@ *

Note: The Splunk TestContainer will only run on M1 Mac's if the Docker version is >= 4.16.0 * and the "Use Rosetta for x86/amd64 emulation on Apple Silicon" setting is enabled. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SplunkResourceManager extends TestContainerResourceManager implements ResourceManager { diff --git a/runners/core-java/src/main/java/org/apache/beam/runners/core/StatefulDoFnRunner.java b/runners/core-java/src/main/java/org/apache/beam/runners/core/StatefulDoFnRunner.java index f5de79652f23..12c99b6b34eb 100644 --- a/runners/core-java/src/main/java/org/apache/beam/runners/core/StatefulDoFnRunner.java +++ b/runners/core-java/src/main/java/org/apache/beam/runners/core/StatefulDoFnRunner.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.core; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -59,6 +60,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class StatefulDoFnRunner implements DoFnRunner { diff --git a/runners/core-java/src/main/java/org/apache/beam/runners/core/construction/SerializablePipelineOptions.java b/runners/core-java/src/main/java/org/apache/beam/runners/core/construction/SerializablePipelineOptions.java index 6568099c1203..8cc468b6d24f 100644 --- a/runners/core-java/src/main/java/org/apache/beam/runners/core/construction/SerializablePipelineOptions.java +++ b/runners/core-java/src/main/java/org/apache/beam/runners/core/construction/SerializablePipelineOptions.java @@ -19,6 +19,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.io.ObjectInputStream; import java.io.Serializable; @@ -32,6 +33,11 @@ * Holds a {@link PipelineOptions} in JSON serialized form and calls {@link * FileSystems#setDefaultPipelineOptions(PipelineOptions)} on construction or on deserialization. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SerializablePipelineOptions implements Serializable { private static final ObjectMapper MAPPER = new ObjectMapper() diff --git a/runners/core-java/src/main/java/org/apache/beam/runners/core/metrics/BoundedTrieData.java b/runners/core-java/src/main/java/org/apache/beam/runners/core/metrics/BoundedTrieData.java index 2d5aec7b61dd..2e7b9fb7f4c6 100644 --- a/runners/core-java/src/main/java/org/apache/beam/runners/core/metrics/BoundedTrieData.java +++ b/runners/core-java/src/main/java/org/apache/beam/runners/core/metrics/BoundedTrieData.java @@ -57,8 +57,12 @@ "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) @SuppressFBWarnings( - value = "IS2_INCONSISTENT_SYNC", - justification = "Some access on purpose are left unsynchronized") + value = {"IS2_INCONSISTENT_SYNC", "CT_CONSTRUCTOR_THROW"}, + justification = + "Some access on purpose are left unsynchronized." + + " Public, so it cannot be made final despite @Internal." + + " Out-of-tree code such as a forked runner may already subclass it." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class BoundedTrieData implements Serializable { private static final int DEFAULT_BOUND = 100; // Default maximum size of the trie diff --git a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/ParDoEvaluator.java b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/ParDoEvaluator.java index 6124f4a5413d..6821747f2645 100644 --- a/runners/direct-java/src/main/java/org/apache/beam/runners/direct/ParDoEvaluator.java +++ b/runners/direct-java/src/main/java/org/apache/beam/runners/direct/ParDoEvaluator.java @@ -53,7 +53,7 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) -class ParDoEvaluator implements TransformEvaluator { +final class ParDoEvaluator implements TransformEvaluator { public interface DoFnRunnerFactory { PushbackSideInputDoFnRunner createRunner( diff --git a/runners/flink/1.20/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java b/runners/flink/1.20/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java index d0f273e8440f..352f763e6c24 100644 --- a/runners/flink/1.20/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java +++ b/runners/flink/1.20/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java @@ -1500,7 +1500,7 @@ public BundleFinalizer bundleFinalizer() { } } - class FlinkTimerInternals implements TimerInternals { + final class FlinkTimerInternals implements TimerInternals { private static final String PENDING_TIMERS_STATE_NAME = "pending-timers"; diff --git a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java index e9846adffa9a..6ad8dc439a95 100644 --- a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java +++ b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java @@ -26,6 +26,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.auto.service.AutoService; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -130,6 +131,11 @@ "keyfor", "nullness" }) // TODO(https://github.com/apache/beam/issues/20497) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class FlinkStreamingPortablePipelineTranslator implements FlinkPortablePipelineTranslator< FlinkStreamingPortablePipelineTranslator.StreamingTranslationContext> { diff --git a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java index fa30374f1167..774706d381f5 100644 --- a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java +++ b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java @@ -1529,7 +1529,7 @@ public BundleFinalizer bundleFinalizer() { } } - class FlinkTimerInternals implements TimerInternals { + final class FlinkTimerInternals implements TimerInternals { private static final String PENDING_TIMERS_STATE_NAME = "pending-timers"; diff --git a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java index 6dd6ecfd15a8..25c6c468738c 100644 --- a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java +++ b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.io; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; @@ -67,6 +68,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class UnboundedSourceWrapper extends RichParallelSourceFunction>> implements BeamStoppableFunction, diff --git a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java index de3d9419ed15..eb46a90f587e 100644 --- a/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java +++ b/runners/flink/2.0/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.state; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.Collections; import java.util.HashSet; @@ -103,6 +104,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class FlinkStateInternals implements StateInternals { private static final StateNamespace globalWindowNamespace = @@ -1185,7 +1191,7 @@ public int hashCode() { } } - private class FlinkWatermarkHoldState implements WatermarkHoldState { + private final class FlinkWatermarkHoldState implements WatermarkHoldState { private final TimestampCombiner timestampCombiner; private final String namespaceString; diff --git a/runners/flink/2.2/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java b/runners/flink/2.2/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java index 74115c13c213..bb1135726efe 100644 --- a/runners/flink/2.2/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java +++ b/runners/flink/2.2/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java @@ -1529,7 +1529,7 @@ public BundleFinalizer bundleFinalizer() { } } - class FlinkTimerInternals implements TimerInternals { + final class FlinkTimerInternals implements TimerInternals { private static final String PENDING_TIMERS_STATE_NAME = "pending-timers"; diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java index e19e495af89d..ce6eec64a20b 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkStreamingPortablePipelineTranslator.java @@ -26,6 +26,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.auto.service.AutoService; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -130,6 +131,11 @@ "keyfor", "nullness" }) // TODO(https://github.com/apache/beam/issues/20497) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class FlinkStreamingPortablePipelineTranslator implements FlinkPortablePipelineTranslator< FlinkStreamingPortablePipelineTranslator.StreamingTranslationContext> { diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/functions/FlinkAssignContext.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/functions/FlinkAssignContext.java index 5b69cce0cd3f..68de93f19658 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/functions/FlinkAssignContext.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/functions/FlinkAssignContext.java @@ -26,7 +26,7 @@ /** {@link org.apache.beam.sdk.transforms.windowing.WindowFn.AssignContext} for Flink functions. */ @SuppressWarnings({"keyfor", "nullness"}) // TODO(https://github.com/apache/beam/issues/20497) -class FlinkAssignContext +final class FlinkAssignContext extends WindowFn.AssignContext { private final WindowedValue value; diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java index b1f15548597b..afcfe738efc8 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/DoFnOperator.java @@ -1503,7 +1503,7 @@ public BundleFinalizer bundleFinalizer() { } } - class FlinkTimerInternals implements TimerInternals { + final class FlinkTimerInternals implements TimerInternals { private static final String PENDING_TIMERS_STATE_NAME = "pending-timers"; diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/KeyedPushedBackElementsHandler.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/KeyedPushedBackElementsHandler.java index e51f30b4be6b..469edb2d2894 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/KeyedPushedBackElementsHandler.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/KeyedPushedBackElementsHandler.java @@ -34,7 +34,7 @@ * operation is keyed and pushed-back data needs to stay in the correct partition when they get * moved. */ -class KeyedPushedBackElementsHandler implements PushedBackElementsHandler { +final class KeyedPushedBackElementsHandler implements PushedBackElementsHandler { static KeyedPushedBackElementsHandler create( KeySelector keySelector, diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java index 3fa758eb676d..78fbcd9336da 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/UnboundedSourceWrapper.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.io; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; @@ -66,6 +67,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class UnboundedSourceWrapper extends RichParallelSourceFunction>> implements BeamStoppableFunction, diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/FlinkSourceSplitEnumerator.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/FlinkSourceSplitEnumerator.java index bb8956f5daea..c85750b4430f 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/FlinkSourceSplitEnumerator.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/FlinkSourceSplitEnumerator.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.io.source; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -39,6 +40,11 @@ import org.slf4j.LoggerFactory; /** Splits a Beam source and assigns its splits to Flink source readers round-robin. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class FlinkSourceSplitEnumerator implements SplitEnumerator, FlinkSourceEnumeratorState> { private static final Logger LOG = LoggerFactory.getLogger(FlinkSourceSplitEnumerator.class); diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/LazyFlinkSourceSplitEnumerator.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/LazyFlinkSourceSplitEnumerator.java index bd07d00cd049..90a30efc0907 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/LazyFlinkSourceSplitEnumerator.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/io/source/LazyFlinkSourceSplitEnumerator.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.io.source; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -34,6 +35,11 @@ import org.slf4j.LoggerFactory; /** Splits a bounded Beam source and assigns one split for each reader request. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class LazyFlinkSourceSplitEnumerator implements SplitEnumerator, FlinkSourceEnumeratorState> { private static final Logger LOG = LoggerFactory.getLogger(LazyFlinkSourceSplitEnumerator.class); diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/BufferingDoFnRunner.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/BufferingDoFnRunner.java index 593719a6b38b..3b596a9c1942 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/BufferingDoFnRunner.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/BufferingDoFnRunner.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.stableinput; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -55,6 +56,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class BufferingDoFnRunner implements DoFnRunner { public static BufferingDoFnRunner create( diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/KeyedBufferingElementsHandler.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/KeyedBufferingElementsHandler.java index 64944f76d4bc..8540f711da80 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/KeyedBufferingElementsHandler.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/stableinput/KeyedBufferingElementsHandler.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.stableinput; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -31,6 +32,11 @@ @SuppressWarnings({ "rawtypes" // TODO(https://github.com/apache/beam/issues/20447) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class KeyedBufferingElementsHandler implements BufferingElementsHandler { static KeyedBufferingElementsHandler create( diff --git a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java index de244c1c8a31..ef0dd524078a 100644 --- a/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java +++ b/runners/flink/src/main/java/org/apache/beam/runners/flink/translation/wrappers/streaming/state/FlinkStateInternals.java @@ -17,6 +17,7 @@ */ package org.apache.beam.runners.flink.translation.wrappers.streaming.state; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.Collections; import java.util.HashSet; @@ -103,6 +104,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class FlinkStateInternals implements StateInternals { private static final StateNamespace globalWindowNamespace = @@ -1185,7 +1191,7 @@ public int hashCode() { } } - private class FlinkWatermarkHoldState implements WatermarkHoldState { + private final class FlinkWatermarkHoldState implements WatermarkHoldState { private final TimestampCombiner timestampCombiner; private final String namespaceString; diff --git a/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/control/DefaultJobBundleFactory.java b/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/control/DefaultJobBundleFactory.java index b8f577f96e58..96c33677dcb9 100644 --- a/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/control/DefaultJobBundleFactory.java +++ b/runners/java-fn-execution/src/main/java/org/apache/beam/runners/fnexecution/control/DefaultJobBundleFactory.java @@ -18,6 +18,7 @@ package org.apache.beam.runners.fnexecution.control; import com.google.auto.value.AutoValue; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.IdentityHashMap; import java.util.Map; @@ -96,6 +97,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class DefaultJobBundleFactory implements JobBundleFactory { private static final Logger LOG = LoggerFactory.getLogger(DefaultJobBundleFactory.class); private static final IdGenerator factoryIdGenerator = IdGenerators.incrementingLongs(); diff --git a/runners/jet/src/main/java/org/apache/beam/runners/jet/JetRunner.java b/runners/jet/src/main/java/org/apache/beam/runners/jet/JetRunner.java index d53de5e11a3d..bf3814a16b45 100644 --- a/runners/jet/src/main/java/org/apache/beam/runners/jet/JetRunner.java +++ b/runners/jet/src/main/java/org/apache/beam/runners/jet/JetRunner.java @@ -24,6 +24,7 @@ import com.hazelcast.jet.config.JobConfig; import com.hazelcast.jet.core.DAG; import com.hazelcast.map.IMap; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -47,6 +48,11 @@ import org.slf4j.LoggerFactory; /** Jet specific implementation of Beam's {@link PipelineRunner}. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class JetRunner extends PipelineRunner { private static final Logger LOG = LoggerFactory.getLogger(JetRunner.class); diff --git a/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AbstractParDoP.java b/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AbstractParDoP.java index 8727a7952ed2..7415eaa88714 100644 --- a/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AbstractParDoP.java +++ b/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AbstractParDoP.java @@ -325,7 +325,7 @@ private static Boolean isCooperativenessAllowed( * An output manager that stores the output in an ArrayList, one for each output ordinal, and a * way to drain to outbox ({@link #tryFlush()}). */ - static class JetOutputManager implements WindowedValueMultiReceiver { + static final class JetOutputManager implements WindowedValueMultiReceiver { private final Outbox outbox; private final Map, Coder> outputCoders; diff --git a/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AssignWindowP.java b/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AssignWindowP.java index 3afa19ccff40..c8824e40528b 100644 --- a/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AssignWindowP.java +++ b/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/AssignWindowP.java @@ -21,6 +21,7 @@ import com.hazelcast.jet.core.AbstractProcessor; import com.hazelcast.jet.core.Processor; import com.hazelcast.jet.core.ResettableSingletonTraverser; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collection; import javax.annotation.Nonnull; import org.apache.beam.runners.jet.Utils; @@ -43,6 +44,11 @@ "nullness", "keyfor" }) // TODO(https://github.com/apache/beam/issues/20497) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class AssignWindowP extends AbstractProcessor { @SuppressWarnings({"FieldCanBeLocal", "unused"}) diff --git a/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/WindowGroupP.java b/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/WindowGroupP.java index 747df5a67bd3..dfc6a6172861 100644 --- a/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/WindowGroupP.java +++ b/runners/jet/src/main/java/org/apache/beam/runners/jet/processors/WindowGroupP.java @@ -207,7 +207,7 @@ Instant earliestWatermarkHold() { } } - private class KeyManager { + private final class KeyManager { private final InMemoryTimerInternals timerInternals; private final InMemoryStateInternalsImpl stateInternals; diff --git a/runners/spark/4/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java b/runners/spark/4/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java index d32dc14eccc0..1adb05b4ef06 100644 --- a/runners/spark/4/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java +++ b/runners/spark/4/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java @@ -270,7 +270,7 @@ public int hashCode() { } /** A partition iterator on a partitioned Beam {@link BoundedSource}. */ - private static class SourcePartitionIterator extends AbstractIterator> + private static final class SourcePartitionIterator extends AbstractIterator> implements Closeable { BoundedReader reader; boolean started = false; diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/io/SourceDStream.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/io/SourceDStream.java index e5e344669070..93f4ea11f80a 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/io/SourceDStream.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/io/SourceDStream.java @@ -53,7 +53,7 @@ @SuppressWarnings({ "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) -class SourceDStream +final class SourceDStream extends InputDStream, CheckpointMarkT>> { private static final Logger LOG = LoggerFactory.getLogger(SourceDStream.class); diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/SparkBeamMetricSource.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/SparkBeamMetricSource.java index 510588fb17dd..da09c3ca1f31 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/SparkBeamMetricSource.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/SparkBeamMetricSource.java @@ -18,12 +18,18 @@ package org.apache.beam.runners.spark.metrics; import com.codahale.metrics.MetricRegistry; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.apache.spark.metrics.source.Source; /** * A Spark {@link Source} that is tailored to expose a {@link SparkBeamMetric}, wrapping an * underlying {@link org.apache.beam.sdk.metrics.MetricResults} instance. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SparkBeamMetricSource implements Source { private static final String METRIC_NAME = "Metrics"; diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/CsvSink.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/CsvSink.java index 994c87535b7f..9bdf6850d9a0 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/CsvSink.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/CsvSink.java @@ -18,6 +18,7 @@ package org.apache.beam.runners.spark.metrics.sink; import com.codahale.metrics.MetricRegistry; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Properties; import org.apache.beam.runners.spark.metrics.WithMetricsSupport; import org.apache.spark.SecurityManager; @@ -36,6 +37,11 @@ * "spark.metrics.conf.*.sink.csv.unit"=seconds * } */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class CsvSink implements Sink { // Initialized reflectively as done by Spark's MetricsSystem diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/GraphiteSink.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/GraphiteSink.java index 43781b6b05a7..983a1ac9609b 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/GraphiteSink.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/metrics/sink/GraphiteSink.java @@ -18,6 +18,7 @@ package org.apache.beam.runners.spark.metrics.sink; import com.codahale.metrics.MetricRegistry; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Properties; import org.apache.beam.runners.spark.metrics.WithMetricsSupport; import org.apache.spark.SecurityManager; @@ -39,6 +40,11 @@ * "spark.metrics.conf.*.sink.graphite.regex"="" * } */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class GraphiteSink implements Sink { // Initialized reflectively as done by Spark's MetricsSystem diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java index d7cdefc929b7..a3cdd5fe9523 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/io/BoundedDatasetFactory.java @@ -262,7 +262,7 @@ public int hashCode() { } /** A partition iterator on a partitioned Beam {@link BoundedSource}. */ - private static class SourcePartitionIterator extends AbstractIterator> + private static final class SourcePartitionIterator extends AbstractIterator> implements Closeable { BoundedReader reader; boolean started = false; diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/SparkBeamMetricSource.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/SparkBeamMetricSource.java index 8a1e980ae0c5..02636fcd16aa 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/SparkBeamMetricSource.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/SparkBeamMetricSource.java @@ -18,12 +18,18 @@ package org.apache.beam.runners.spark.structuredstreaming.metrics; import com.codahale.metrics.MetricRegistry; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import org.apache.spark.metrics.source.Source; /** * A Spark {@link Source} that is tailored to expose a {@link SparkBeamMetric}, wrapping an * underlying {@link org.apache.beam.sdk.metrics.MetricResults} instance. */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SparkBeamMetricSource implements Source { private final String name; diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleCsvSink.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleCsvSink.java index dd23d5040464..c0a55a5877f3 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleCsvSink.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleCsvSink.java @@ -18,6 +18,7 @@ package org.apache.beam.runners.spark.structuredstreaming.metrics.sink; import com.codahale.metrics.MetricRegistry; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Properties; import org.apache.beam.runners.spark.structuredstreaming.metrics.WithMetricsSupport; import org.apache.spark.SecurityManager; @@ -36,6 +37,11 @@ * "spark.metrics.conf.*.sink.csv.unit"=seconds * } */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class CodahaleCsvSink implements Sink { // Initialized reflectively as done by Spark's MetricsSystem diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleGraphiteSink.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleGraphiteSink.java index fe709ad81ab7..356340f421ea 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleGraphiteSink.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/structuredstreaming/metrics/sink/CodahaleGraphiteSink.java @@ -18,6 +18,7 @@ package org.apache.beam.runners.spark.structuredstreaming.metrics.sink; import com.codahale.metrics.MetricRegistry; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Properties; import org.apache.beam.runners.spark.structuredstreaming.metrics.WithMetricsSupport; import org.apache.spark.SecurityManager; @@ -39,6 +40,11 @@ * "spark.metrics.conf.*.sink.graphite.regex"="" * } */ +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class CodahaleGraphiteSink implements Sink { // Initialized reflectively as done by Spark's MetricsSystem diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkBatchPortablePipelineTranslator.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkBatchPortablePipelineTranslator.java index 521f95835978..54f9a04b5df6 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkBatchPortablePipelineTranslator.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkBatchPortablePipelineTranslator.java @@ -26,6 +26,7 @@ import static org.apache.beam.runners.fnexecution.translation.PipelineTranslatorUtils.instantiateCoder; import com.google.auto.service.AutoService; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.Collections; import java.util.HashMap; @@ -77,6 +78,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SparkBatchPortablePipelineTranslator implements SparkPortablePipelineTranslator { diff --git a/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkStreamingPortablePipelineTranslator.java b/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkStreamingPortablePipelineTranslator.java index db3551454dcd..8bb947b6e743 100644 --- a/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkStreamingPortablePipelineTranslator.java +++ b/runners/spark/src/main/java/org/apache/beam/runners/spark/translation/SparkStreamingPortablePipelineTranslator.java @@ -24,6 +24,7 @@ import static org.apache.beam.runners.fnexecution.translation.PipelineTranslatorUtils.getWindowedValueCoder; import static org.apache.beam.runners.fnexecution.translation.PipelineTranslatorUtils.getWindowingStrategy; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; @@ -72,6 +73,11 @@ "rawtypes", // TODO(https://github.com/apache/beam/issues/20447) "nullness" // TODO(https://github.com/apache/beam/issues/20497) }) +@SuppressFBWarnings( + value = "CT_CONSTRUCTOR_THROW", + justification = + "Public API, so it cannot be made final." + + " A finalizer attack needs an attacker-supplied subclass on the classpath.") public class SparkStreamingPortablePipelineTranslator implements SparkPortablePipelineTranslator { diff --git a/sdks/java/build-tools/src/main/resources/beam/spotbugs-filter.xml b/sdks/java/build-tools/src/main/resources/beam/spotbugs-filter.xml index 5f6f368228e5..8c7bb32708ae 100644 --- a/sdks/java/build-tools/src/main/resources/beam/spotbugs-filter.xml +++ b/sdks/java/build-tools/src/main/resources/beam/spotbugs-filter.xml @@ -55,9 +55,6 @@ --> - - -