| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <!-- Spotbugs filtering. |
| |
| Spotbugs is a static code analysis tool run as part of the "check" phase of the build. |
| This file dictates which categories of bugs and individual false positives that we suppress. |
| |
| For a detailed description of spotbugs bug categories, see https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html |
| --> |
| <FindBugsFilter> |
| |
| <Match> |
| <!-- Disable warnings about mutable objects and the use of public fields. |
| EI_EXPOSE_REP: May expose internal representation by returning reference to mutable object |
| EI_EXPOSE_REP2: May expose internal representation by incorporating reference to mutable object |
| MS_PKGPROTECT: Field should be package protected |
| MS_EXPOSE_REP: Public static method may expose internal representation by returning array |
| EI_EXPOSE_STATIC_REP2: May expose internal static state by storing a mutable object into a static field --> |
| <Bug pattern="EI_EXPOSE_REP,EI_EXPOSE_REP2,MS_PKGPROTECT,EI_EXPOSE_STATIC_REP2,MS_EXPOSE_REP"/> |
| </Match> |
| |
| <Match> |
| <!-- Disable warnings about System.exit, until we decide to stop using it. |
| DM_EXIT: Method invokes System.exit --> |
| <Bug pattern="DM_EXIT"/> |
| </Match> |
| |
| <Match> |
| <!-- Disable warnings about creating Classloaders inside doPrivilege. |
| DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED: Classloaders should only be created inside doPrivileged block |
| The security manager has been deprecated for removal as of JDK 17, see https://openjdk.org/jeps/411 --> |
| <Bug pattern="DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED"/> |
| </Match> |
| |
| <Match> |
| <!-- Disable warnings about the lack of equals() when compareTo() is implemented. |
| EQ_COMPARETO_USE_OBJECT_EQUALS: This class defines a compareTo method but no equals() method --> |
| <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/> |
| </Match> |
| |
| <Match> |
| <!-- Disable warnings about constructors that throw exceptions. |
| CT_CONSTRUCTOR_THROW: Be wary of letting constructors throw exceptions --> |
| <Bug pattern="CT_CONSTRUCTOR_THROW"/> |
| </Match> |
| |
| <Match> |
| <!-- Disable warnings about identifiers that conflict with standard library identifiers. |
| PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_CLASS_NAMES: Do not reuse public identifiers from JSL as class name |
| PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_FIELD_NAMES: Do not reuse public identifiers from JSL as field name |
| PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_METHOD_NAMES: Do not reuse public identifiers from JSL as method name |
| --> |
| <Bug pattern="PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_CLASS_NAMES,PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_FIELD_NAMES,PI_DO_NOT_REUSE_PUBLIC_IDENTIFIERS_METHOD_NAMES"/> |
| </Match> |
| |
| <Match> |
| <!-- Spotbugs tends to work a little bit better with Java than with Scala. We suppress |
| some categories of bug reports when using Scala, since spotbugs generates huge |
| numbers of false positives in some of these categories when examining Scala code. |
| |
| NP_LOAD_OF_KNOWN_NULL_VALUE: The variable referenced at this point is known to be null |
| due to an earlier check against null. |
| NP_NULL_PARAM_DEREF: Method call passes null for non-null parameter. |
| NP_NULL_ON_SOME_PATH: Possible null pointer dereference |
| SE_BAD_FIELD: Non-transient non-serializable instance field in serializable class. |
| DM_STRING_CTOR: Method invokes inefficient new String(String) constructor. |
| DM_NEW_FOR_GETCLASS: Method allocates an object, only to get the class object. |
| ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD: Write to static field from instance method. |
| DM_NUMBER_CTOR: Method invokes inefficient Number constructor; use static valueOf instead. |
| RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE: Nullcheck of value previously dereferenced. |
| RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE: Redundant nullcheck of value known to be non-null. |
| RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE: Redundant nullcheck of value known to be null. |
| RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT: Return value of method without side effect is ignored. |
| NM_CLASS_NAMING_CONVENTION: Class names should start with an upper case letter. |
| NM_METHOD_NAMING_CONVENTION: Method names should start with a lower case letter. |
| EC_NULL_ARG: Call to equals(null) |
| NP_ALWAYS_NULL: Null pointer dereference |
| MS_CANNOT_BE_FINAL: Field isn't final and can't be protected from malicious code |
| IC_INIT_CIRCULARITY: Initialization circularity |
| SE_NO_SUITABLE_CONSTRUCTOR: Class is Serializable but its superclass doesn't define a void constructor |
| PA_PUBLIC_MUTABLE_OBJECT_ATTRIBUTE: Mutable object-type field is public --> |
| <Source name="~.*\.scala" /> |
| <Or> |
| <Bug pattern="NP_LOAD_OF_KNOWN_NULL_VALUE"/> |
| <Bug pattern="NP_NULL_ON_SOME_PATH"/> |
| <Bug pattern="NP_NULL_PARAM_DEREF"/> |
| <Bug pattern="SE_BAD_FIELD"/> |
| <Bug pattern="DM_STRING_CTOR"/> |
| <Bug pattern="DM_NEW_FOR_GETCLASS"/> |
| <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD"/> |
| <Bug pattern="DM_NUMBER_CTOR"/> |
| <Bug pattern="RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE"/> |
| <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/> |
| <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE"/> |
| <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/> |
| <Bug pattern="NM_CLASS_NAMING_CONVENTION"/> |
| <Bug pattern="NM_METHOD_NAMING_CONVENTION"/> |
| <Bug pattern="EC_NULL_ARG"/> |
| <Bug pattern="NP_ALWAYS_NULL"/> |
| <Bug pattern="MS_CANNOT_BE_FINAL"/> |
| <Bug pattern="IC_INIT_CIRCULARITY"/> |
| <Bug pattern="SE_NO_SUITABLE_CONSTRUCTOR"/> |
| <Bug pattern="DMI_RANDOM_USED_ONLY_ONCE"/> |
| <Bug pattern="SSD_DO_NOT_USE_INSTANCE_LOCK_ON_SHARED_STATIC_DATA"/> |
| <Bug pattern="PA_PUBLIC_MUTABLE_OBJECT_ATTRIBUTE"/> |
| </Or> |
| </Match> |
| |
| <Match> |
| <!-- disabled due to too many false positives |
| RV_EXCEPTION_NOT_THROWN: Exception created and dropped rather than thrown --> |
| <Bug pattern="RV_EXCEPTION_NOT_THROWN"/> |
| </Match> |
| |
| <!-- false positive in Java 11, related to https://github.com/spotbugs/spotbugs/issues/756 but more complex --> |
| <Match> |
| <Class name="org.apache.kafka.common.compress.Lz4BlockOutputStream"/> |
| <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE"/> |
| </Match> |
| |
| <!-- false positive, see https://github.com/spotbugs/spotbugs/issues/1001 --> |
| <Match> |
| <Class name="org.apache.kafka.common.internals.KafkaFutureImpl"/> |
| <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppression for the equals() for extension methods. --> |
| <Class name="kafka.api.package$ElectLeadersRequestOps"/> |
| <Bug pattern="EQ_UNUSUAL"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppression for the equals() for extension methods. --> |
| <Class name="kafka.utils.Implicits$MapExtensionMethods"/> |
| <Bug pattern="EQ_UNUSUAL"/> |
| </Match> |
| |
| <Match> |
| <!-- A spurious null check after inlining by the scalac optimizer confuses spotBugs --> |
| <Class name="kafka.log.Log"/> |
| <Bug pattern="NP_NULL_ON_SOME_PATH_EXCEPTION"/> |
| </Match> |
| |
| <Match> |
| <!-- Scala doesn't have checked exceptions so one cannot catch RuntimeException and rely |
| on the compiler to fail if the code is changed to call a method that throws Exception. |
| Given that, this bug pattern doesn't make sense for Scala code. --> |
| <Or> |
| <Class name="kafka.log.Log"/> |
| </Or> |
| <Bug pattern="REC_CATCH_EXCEPTION"/> |
| </Match> |
| |
| <Match> |
| <Or> |
| <!-- Unboxing to Int to make scalac happy makes spotBugs unhappy --> |
| <Class name="kafka.tools.ConsoleConsumer$ConsumerConfig"/> |
| <!-- Java's own Map#compute forces this pattern on us --> |
| <Class name="org.apache.kafka.streams.query.Position"/> |
| </Or> |
| <Bug pattern="BX_UNBOXING_IMMEDIATELY_REBOXED"/> |
| </Match> |
| |
| <Match> |
| <!-- offsets is a lazy val and it confuses spotBugs with its locking scheme --> |
| <Class name="kafka.server.checkpoints.LazyOffsetCheckpointMap"/> |
| <Bug pattern="IS2_INCONSISTENT_SYNC"/> |
| </Match> |
| |
| <Match> |
| <!-- Keeping this class for compatibility. It's deprecated and will be removed in the next major release --> |
| <Source name="MessageFormatter.scala"/> |
| <Package name="kafka.common"/> |
| <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about some static initializers in Schema using instances of a |
| subclass. --> |
| <Or> |
| <Class name="org.apache.kafka.connect.data.Schema"/> |
| <Class name="org.apache.kafka.connect.data.SchemaBuilder"/> |
| </Or> |
| <Bug pattern="IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings about unread protected fields in some public classes. |
| Although these are not read in Kafka Connect code, they are part of the API. --> |
| <Or> |
| <Class name="org.apache.kafka.connect.connector.Connector"/> |
| <Class name="org.apache.kafka.connect.sink.SinkTask"/> |
| <Class name="org.apache.kafka.connect.source.SourceTask"/> |
| </Or> |
| <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings about converting an integer number of |
| milliseconds to a java.util.Date object. We do this intentionally in |
| org.apache.kafka.connect.data.Time. --> |
| <Class name="org.apache.kafka.connect.data.Time"/> |
| <Method name="toLogical"/> |
| <Bug pattern="ICAST_INT_2_LONG_AS_INSTANT"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warning about missing reflexive and symmetric properties of equal. |
| This equals method is used as a value filter for Jackson. --> |
| <Class name="org.apache.kafka.connect.runtime.rest.entities.PluginInfo$NoVersionFilter"/> |
| <Method name="equals"/> |
| <Bug pattern="EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress aggressive and unnecessary warnings about switch fallthrough --> |
| <Class name="org.apache.kafka.connect.runtime.rest.resources.LoggingResource" /> |
| <Method name="setLevel" /> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH" /> |
| </Match> |
| |
| <Match> |
| <!-- Converting to an optional boolean intentionally returns null on null input. --> |
| <Class name="org.apache.kafka.connect.data.Values"/> |
| <Method name="convertToBoolean"/> |
| <Bug pattern="NP_BOOLEAN_RETURN_NULL"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress some minor warnings about machine-generated code for benchmarking. --> |
| <Package name="~org\.apache\.kafka\.jmh\..*\.jmh_generated"/> |
| </Match> |
| |
| <Match> |
| <!-- JMH benchmarks often have fields that are modified by the framework. |
| SS_SHOULD_BE_STATIC: Unread field: should this field be static? --> |
| <Package name="~org\.apache\.kafka\.jmh\..*"/> |
| <Bug pattern="SS_SHOULD_BE_STATIC"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings about generated schema arrays. --> |
| <Or> |
| <Package name="org.apache.kafka.common.message"/> |
| <Package name="org.apache.kafka.streams.internals.generated"/> |
| <Package name="kafka.internals.generated"/> |
| </Or> |
| <Bug pattern="MS_MUTABLE_ARRAY"/> |
| </Match> |
| |
| <Match> |
| <Class name="org.apache.kafka.streams.processor.internals.TopologyMetadata"/> |
| <Method name="offsetResetStrategy"/> |
| <Bug pattern="NP_OPTIONAL_RETURN_NULL"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings about ignoring the return value of await. |
| This is done intentionally because we use other clues to determine |
| if the wait was cut short. --> |
| <Class name="org.apache.kafka.connect.runtime.AbstractWorkerSourceTask"/> |
| <Method name="execute"/> |
| <Bug pattern="RV_RETURN_VALUE_IGNORED"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress some warnings about intentional switch statement fallthrough. --> |
| <Class name="org.apache.kafka.connect.runtime.WorkerConnector"/> |
| <Or> |
| <Method name="doStart"/> |
| </Or> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about intentional switch statement fallthrough. --> |
| <Class name="org.apache.kafka.common.security.authenticator.SaslClientAuthenticator"/> |
| <Method name="authenticate"/> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH"/> |
| </Match> |
| |
| <Match> |
| <!-- False positive - the volatile read is guarded by a lock. --> |
| <Class name="org.apache.kafka.storage.internals.log.AbstractIndex"/> |
| <Method name="incrementEntries"/> |
| <Bug pattern="VO_VOLATILE_INCREMENT"/> |
| </Match> |
| |
| <Match> |
| <!-- False positive - `ScheduledThreadPoolExecutor.getQueue()` specifies via its javadoc that its elements are of type `ScheduledFuture` --> |
| <Class name="org.apache.kafka.server.util.KafkaScheduler"/> |
| <Method name="taskRunning"/> |
| <Bug pattern="GC_UNRELATED_TYPES"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about intentional missing default cases and fallthroughs. --> |
| <Class name="org.apache.kafka.common.utils.Utils"/> |
| <Method name="murmur2"/> |
| <Or> |
| <Bug pattern="SF_SWITCH_NO_DEFAULT"/> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH"/> |
| </Or> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about intentional missing default cases and fallthroughs. --> |
| <Class name="org.apache.kafka.streams.state.internals.Murmur3"/> |
| <Or> |
| <Bug pattern="SF_SWITCH_NO_DEFAULT"/> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH"/> |
| </Or> |
| </Match> |
| |
| |
| <Match> |
| <!-- Suppress a warning about intentional missing default cases and fallthroughs. --> |
| <Class name="org.apache.kafka.streams.state.internals.Murmur3$IncrementalHash32"/> |
| <Or> |
| <Bug pattern="SF_SWITCH_NO_DEFAULT"/> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH"/> |
| </Or> |
| </Match> |
| |
| <Match> |
| <!-- Public mutable fields are intentional in some Streams classes. |
| PA_PUBLIC_PRIMITIVE_ATTRIBUTE: Primitive field is public --> |
| <Or> |
| <Class name="org.apache.kafka.streams.kstream.Materialized"/> |
| <Class name="org.apache.kafka.streams.state.internals.LeftOrRightValueDeserializer"/> |
| </Or> |
| <Bug pattern="PA_PUBLIC_PRIMITIVE_ATTRIBUTE"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a spurious warning about locks not being released on all paths. |
| This happens because there is an 'if' statement that checks if we have the lock before |
| releasing it. --> |
| <Class name="org.apache.kafka.clients.producer.internals.BufferPool"/> |
| <Method name="allocate"/> |
| <Bug pattern="UL_UNRELEASED_LOCK"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings about synchronizing on the UnsentRequests |
| ConcurrentHashMap. This is done deliberately. --> |
| <Package name="org.apache.kafka.clients.consumer.internals"/> |
| <Source name="ConsumerNetworkClient.java"/> |
| <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress inconsistent synchronization warnings about |
| AbstractCoordinator#coordinator. See KAFKA-4992 for details.--> |
| <Class name="org.apache.kafka.clients.consumer.internals.AbstractCoordinator"/> |
| <Bug pattern="IS2_INCONSISTENT_SYNC"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about ignoring the return value of await. |
| This is done intentionally because we use other clues to determine |
| if the wait was cut short. --> |
| <Package name="org.apache.kafka.queue"/> |
| <Source name="KafkaEventQueue.java"/> |
| <Bug pattern="RV_RETURN_VALUE_IGNORED,RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings about implementing compareTo but not equals. --> |
| <Class name="org.apache.kafka.streams.processor.internals.Stamped"/> |
| <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warning about applicationID that gets initialized before |
| any other threads are created, but is used in synchronized and |
| unsynchronized methods because it comes from the configs, |
| passed through rewriteTopology. --> |
| <Package name="org.apache.kafka.streams.processor.internals"/> |
| <Source name="InternalTopologyBuilder.java"/> |
| <Bug pattern="IS2_INCONSISTENT_SYNC"/> |
| </Match> |
| |
| <Match> |
| <!-- Ignore a warning about synchronizing on an AtomicBoolean --> |
| <Package name="kafka.metrics"/> |
| <Source name="KafkaMetricsReporter.scala"/> |
| <Method name="startReporters"/> |
| <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/> |
| </Match> |
| |
| <Match> |
| <!-- Ignore spurious warning about imbalanced synchronization on a cached Exception. Some accesses of the |
| variable must occur in synchronized blocks, while some need not, because of the nature of the producer. |
| This seems to throw the static checker off. --> |
| <Package name="org.apache.kafka.clients.producer" /> |
| <Source name="TransactionState.java" /> |
| <Bug pattern="IS2_INCONSISTENT_SYNC" /> |
| </Match> |
| |
| <Match> |
| <!-- Ignore spurious warning about inconsistent synchronization on a currentFetch. |
| Locking is consistent but does not use synchronized methods. All accesses |
| are performed in the application thread once it has acquired the lock. --> |
| <Package name="org.apache.kafka.clients.consumer.internals" /> |
| <Source name="ShareConsumerImpl.java" /> |
| <Bug pattern="IS2_INCONSISTENT_SYNC" /> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a spurious warning about an unreleased lock. --> |
| <Class name="kafka.utils.timer.SystemTimer"/> |
| <Method name="add"/> |
| <Bug pattern="UL_UNRELEASED_LOCK_EXCEPTION_PATH"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a spurious warning about calling notify without modifying |
| other state under the monitor. --> |
| <Package name="org.apache.kafka.trogdor.workload"/> |
| <Source name="RoundTripWorker.java"/> |
| <Bug pattern="NN_NAKED_NOTIFY"/> |
| </Match> |
| |
| <Match> |
| <Package name="org.apache.kafka.streams.scala"/> |
| <Source name="FunctionsCompatConversions.scala"/> |
| <Bug pattern="EQ_UNUSUAL"/> |
| </Match> |
| |
| - <Match> |
| <Package name="org.apache.kafka.streams.scala"/> |
| <Or> |
| <Class name="org.apache.kafka.streams.scala.Serializer" /> |
| <Class name="org.apache.kafka.streams.scala.Deserializer" /> |
| </Or> |
| <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE"/> |
| </Match> |
| |
| <!-- Suppress warnings for unused members that are undetectably used by Jackson --> |
| <Match> |
| <Package name="org.apache.kafka.streams.examples.pageview"/> |
| <Bug pattern="NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/> |
| </Match> |
| <Match> |
| <Package name="org.apache.kafka.streams.examples.pageview"/> |
| <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/> |
| </Match> |
| <Match> |
| <Package name="org.apache.kafka.streams.examples.pageview"/> |
| <Bug pattern="UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD"/> |
| </Match> |
| |
| <!-- END Suppress warnings for unused members that are undetectably used by Jackson --> |
| |
| <Match> |
| <!-- Boolean deserializer intentionally returns null on null input. --> |
| <Class name="org.apache.kafka.common.serialization.BooleanDeserializer"/> |
| <Method name="deserialize"/> |
| <Bug pattern="NP_BOOLEAN_RETURN_NULL"/> |
| </Match> |
| |
| <Match> |
| <!-- False positive - null is allow in SortedMap --> |
| <Class name="org.apache.kafka.streams.processor.internals.assignment.Graph"/> |
| <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about ignoring return value because this is intentional. --> |
| <Class name="org.apache.kafka.common.config.AbstractConfig$ResolvingMap"/> |
| <Method name="get"/> |
| <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/> |
| </Match> |
| |
| <Match> |
| <!-- False positive - the field is used in other modules and its unit test --> |
| <Class name="org.apache.kafka.common.utils.PrimitiveRef$LongRef"/> |
| <Field name="value"/> |
| <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings related to jmh generated code --> |
| <Package name="org.apache.kafka.jmh.acl.generated"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warnings related to jmh generated code --> |
| <Package name="org.apache.kafka.jmh.metadata.generated"/> |
| </Match> |
| |
| <Match> |
| <Package name="org.apache.kafka.common.security.oauthbearer.secured" /> |
| <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/> |
| </Match> |
| |
| <Match> |
| <Class name="org.apache.kafka.jmh.util.ByteUtilsBenchmark$BaseBenchmarkState" /> |
| <!-- Suppress warning because JMH code is used to instantiate Random() once per Trial. This is done to ensure |
| that all benchmarks run with same seed for Random. --> |
| <Bug pattern="DMI_RANDOM_USED_ONLY_ONCE"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress a warning about await not being in a loop - we expect the loop to be outside the method. --> |
| <Class name="org.apache.kafka.streams.processor.internals.tasks.DefaultTaskManager"/> |
| <Bug pattern="WA_AWAIT_NOT_IN_LOOP"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress the warnings about the caller not using the return value from Consumer. KafkaConsumer now |
| delegates all API calls to an internal instance of Consumer, which confuses SpotBugs. --> |
| <Or> |
| <Class name="org.apache.kafka.tools.ClientCompatibilityTest"/> |
| <Class name="org.apache.kafka.tools.StreamsResetter"/> |
| </Or> |
| <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT"/> |
| </Match> |
| <Match> |
| <!-- Suppress warning about using static DateFormat in a multithreaded context --> |
| <Class name="org.apache.kafka.tools.ReplicaVerificationTool$ReplicaBuffer"/> |
| <Bug pattern="STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE"/> |
| </Match> |
| |
| <Match> |
| <!-- Suppress warning about SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR in multiple class --> |
| <Or> |
| <Class name="org.apache.kafka.common.Node"/> |
| <Class name="org.apache.kafka.common.record.UnalignedMemoryRecords"/> |
| <Class name="org.apache.kafka.clients.Metadata$LeaderAndEpoch"/> |
| <Class name="org.apache.kafka.server.share.fetch.ShareAcquiredRecords"/> |
| </Or> |
| <Bug pattern="SING_SINGLETON_HAS_NONPRIVATE_CONSTRUCTOR"/> |
| </Match> |
| |
| <Match> |
| <!-- New warning type added when we upgraded from spotbugs 4.8.6 to 4.9.4. |
| These are possibly real bugs, and have not been evaluated, they were just bulk excluded to unblock upgrading Spotbugs. |
| --> |
| <Or> |
| <Class name="org.apache.kafka.clients.producer.MockProducer"/> |
| <Class name="org.apache.kafka.clients.producer.internals.ProducerBatch"/> |
| <Class name="org.apache.kafka.common.utils.ChunkedBytesStream"/> |
| <Class name="org.apache.kafka.common.security.authenticator.LoginManager"/> |
| <Class name="org.apache.kafka.storage.internals.log.AbstractIndex"/> |
| <Class name="org.apache.kafka.server.AssignmentsManager"/> |
| <Class name="org.apache.kafka.connect.file.FileStreamSourceTask"/> |
| <Class name="org.apache.kafka.streams.processor.internals.DefaultStateUpdater$StateUpdaterThread"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamThread"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamsProducer"/> |
| <Class name="org.apache.kafka.streams.state.internals.AbstractDualSchemaRocksDBSegmentedBytesStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.AbstractRocksDBSegmentedBytesStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemorySessionStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemoryTimeOrderedKeyValueChangeBuffer"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemoryWindowStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.ThreadCache"/> |
| <Class name="org.apache.kafka.connect.runtime.WorkerSinkTask"/> |
| <Class name="org.apache.kafka.tools.VerifiableProducer"/> |
| <Class name="org.apache.kafka.coordinator.transaction.TransactionMetadata"/> |
| <Class name="org.apache.kafka.tools.VerifiableShareConsumer"/> |
| <Class name="org.apache.kafka.server.quota.ClientQuotaManager"/> |
| <Class name="kafka.log.LogManager"/> |
| <Class name="kafka.server.DelayedFetch"/> |
| <Class name="kafka.server.KafkaApis"/> |
| <Class name="kafka.server.metadata.KRaftMetadataCache"/> |
| <Class name="org.apache.kafka.streams.processor.internals.InternalTopologyBuilder"/> |
| </Or> |
| <Bug pattern="AT_NONATOMIC_OPERATIONS_ON_SHARED_VARIABLE"/> |
| </Match> |
| |
| <Match> |
| <!-- New warning type added when we upgraded from spotbugs 4.8.6 to 4.9.4. |
| These are possibly real bugs, and have not been evaluated, they were just bulk excluded to unblock upgrading Spotbugs. |
| --> |
| <Or> |
| <Class name="org.apache.kafka.clients.producer.internals.ProducerBatch"/> |
| <Class name="org.apache.kafka.clients.producer.internals.RecordAccumulator"/> |
| <Class name="org.apache.kafka.common.security.kerberos.KerberosLogin"/> |
| <Class name="org.apache.kafka.server.util.timer.TimingWheel"/> |
| <Class name="org.apache.kafka.server.log.remote.metadata.storage.ConsumerTask"/> |
| <Class name="org.apache.kafka.storage.internals.log.LogSegment"/> |
| <Class name="org.apache.kafka.storage.internals.log.ProducerStateManager"/> |
| <Class name="org.apache.kafka.image.publisher.SnapshotGenerator"/> |
| <Class name="org.apache.kafka.image.publisher.SnapshotGenerator$Builder"/> |
| <Class name="org.apache.kafka.connect.file.FileStreamSourceTask"/> |
| <Class name="org.apache.kafka.streams.processor.internals.DefaultStateUpdater$StateUpdaterThread"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamThread"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamsProducer"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemoryTimeOrderedKeyValueChangeBuffer"/> |
| <Class name="org.apache.kafka.connect.runtime.WorkerSinkTask"/> |
| <Class name="org.apache.kafka.tools.ConsumerPerformance$ConsumerPerfRebListener"/> |
| <Class name="org.apache.kafka.coordinator.transaction.TransactionMetadata"/> |
| <Class name="kafka.server.BrokerLifecycleManager"/> |
| <Class name="kafka.server.CachedPartition"/> |
| <Class name="kafka.server.ControllerRegistrationManager"/> |
| <Class name="kafka.server.FetchSession"/> |
| <Class name="kafka.server.share.SharePartition"/> |
| <Class name="kafka.cluster.Partition"/> |
| <Class name="kafka.coordinator.transaction.TransactionCoordinator"/> |
| <Class name="kafka.coordinator.transaction.TransactionStateManager"/> |
| <Class name="kafka.log.LogManager"/> |
| <Class name="kafka.server.ReplicaManager"/> |
| <Class name="org.apache.kafka.streams.state.internals.AbstractDualSchemaRocksDBSegmentedBytesStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.AbstractRocksDBSegmentedBytesStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemorySessionStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemoryWindowStore"/> |
| </Or> |
| <Bug pattern="AT_NONATOMIC_64BIT_PRIMITIVE"/> |
| </Match> |
| |
| <Match> |
| <!-- New warning type added when we upgraded from spotbugs 4.8.6 to 4.9.4. |
| These are possibly real bugs, and have not been evaluated, they were just bulk excluded to unblock upgrading Spotbugs. |
| --> |
| <Or> |
| <Class name="org.apache.kafka.clients.consumer.MockConsumer"/> |
| <Class name="org.apache.kafka.clients.consumer.internals.AbstractMembershipManager"/> |
| <Class name="org.apache.kafka.clients.consumer.internals.AsyncKafkaConsumer"/> |
| <Class name="org.apache.kafka.clients.consumer.internals.ClassicKafkaConsumer"/> |
| <Class name="org.apache.kafka.clients.consumer.internals.ConsumerCoordinator"/> |
| <Class name="org.apache.kafka.clients.consumer.internals.ShareConsumeRequestManager"/> |
| <Class name="org.apache.kafka.clients.consumer.internals.StreamsMembershipManager"/> |
| <Class name="org.apache.kafka.clients.producer.MockProducer"/> |
| <Class name="org.apache.kafka.clients.producer.internals.ProducerBatch"/> |
| <Class name="org.apache.kafka.clients.producer.internals.TransactionManager"/> |
| <Class name="org.apache.kafka.common.network.Selector"/> |
| <Class name="org.apache.kafka.common.security.authenticator.LoginManager"/> |
| <Class name="org.apache.kafka.common.security.authenticator.SaslClientAuthenticator"/> |
| <Class name="org.apache.kafka.common.security.kerberos.KerberosLogin"/> |
| <Class name="org.apache.kafka.common.security.oauthbearer.OAuthBearerValidatorCallbackHandler"/> |
| <Class name="org.apache.kafka.common.security.oauthbearer.internals.secured.RefreshingHttpsJwks"/> |
| <Class name="org.apache.kafka.common.utils.ChunkedBytesStream"/> |
| <Class name="org.apache.kafka.common.utils.Shell"/> |
| <Class name="org.apache.kafka.clients.producer.internals.TransactionManager$TxnRequestHandler"/> |
| <Class name="org.apache.kafka.server.log.remote.metadata.storage.ConsumerTask"/> |
| <Class name="org.apache.kafka.storage.internals.log.LogSegment"/> |
| <Class name="org.apache.kafka.image.publisher.SnapshotGenerator$Builder"/> |
| <Class name="org.apache.kafka.server.AssignmentsManager"/> |
| <Class name="org.apache.kafka.connect.file.FileStreamSourceTask"/> |
| <Class name="org.apache.kafka.streams.processor.internals.InternalTopologyBuilder"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamsPartitionAssignor"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamsProducer"/> |
| <Class name="org.apache.kafka.streams.processor.internals.TaskManager"/> |
| <Class name="org.apache.kafka.streams.state.internals.AbstractRocksDBSegmentedBytesStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.InMemoryTimeOrderedKeyValueChangeBuffer"/> |
| <Class name="org.apache.kafka.streams.state.internals.RocksDBStore"/> |
| <Class name="org.apache.kafka.streams.state.internals.TimeOrderedCachingWindowStore"/> |
| <Class name="org.apache.kafka.connect.runtime.AbstractWorkerSourceTask"/> |
| <Class name="org.apache.kafka.connect.runtime.ExactlyOnceWorkerSourceTask"/> |
| <Class name="org.apache.kafka.connect.runtime.WorkerSinkTask"/> |
| <Class name="org.apache.kafka.connect.runtime.distributed.DistributedHerder"/> |
| <Class name="org.apache.kafka.connect.runtime.distributed.WorkerCoordinator"/> |
| <Class name="org.apache.kafka.connect.runtime.distributed.WorkerGroupMember"/> |
| <Class name="org.apache.kafka.connect.util.KafkaBasedLog"/> |
| <Class name="org.apache.kafka.tools.VerifiableProducer"/> |
| <Class name="org.apache.kafka.coordinator.transaction.TransactionMetadata"/> |
| <Class name="kafka.network.Acceptor"/> |
| <Class name="kafka.network.Processor"/> |
| <Class name="kafka.server.BrokerLifecycleManager"/> |
| <Class name="kafka.server.BrokerServer"/> |
| <Class name="kafka.server.CachedPartition"/> |
| <Class name="kafka.server.ControllerRegistrationManager"/> |
| <Class name="kafka.server.FetchSession"/> |
| <Class name="kafka.server.KafkaConfig"/> |
| <Class name="kafka.server.metadata.BrokerMetadataPublisher"/> |
| <Class name="kafka.server.metadata.DelegationTokenPublisher"/> |
| <Class name="org.apache.kafka.connect.mirror.MirrorSourceConnector"/> |
| <Class name="org.apache.kafka.raft.LeaderState"/> |
| <Class name="kafka.coordinator.transaction.TransactionCoordinator"/> |
| <Class name="kafka.coordinator.transaction.TransactionMarkerRequestCompletionHandler"/> |
| <Class name="kafka.coordinator.transaction.TransactionStateManager"/> |
| <Class name="kafka.log.LogManager"/> |
| <Class name="kafka.server.KafkaApis"/> |
| <Class name="kafka.server.ReplicaManager"/> |
| <Class name="org.apache.kafka.trogdor.coordinator.NodeManager$NodeHeartbeat"/> |
| <Class name="org.apache.kafka.connect.runtime.distributed.DistributedHerder$RebalanceListener"/> |
| <Class name="org.apache.kafka.streams.processor.internals.StreamThread"/> |
| </Or> |
| <Bug pattern="AT_STALE_THREAD_WRITE_OF_PRIMITIVE"/> |
| </Match> |
| |
| <Match> |
| <!-- New warning type added when we upgraded from spotbugs 4.8.6 to 4.9.4. |
| These are possibly real bugs, and have not been evaluated, they were just bulk excluded to unblock upgrading Spotbugs. |
| --> |
| <Or> |
| <Class name="kafka.coordinator.transaction.CompleteCommit"/> |
| <Class name="kafka.coordinator.transaction.CompleteAbort"/> |
| <Class name="kafka.coordinator.transaction.Dead"/> |
| <Class name="kafka.coordinator.transaction.Empty"/> |
| <Class name="kafka.coordinator.transaction.Ongoing"/> |
| <Class name="kafka.coordinator.transaction.PrepareAbort"/> |
| <Class name="kafka.coordinator.transaction.PrepareCommit"/> |
| <Class name="kafka.coordinator.transaction.PrepareEpochFence"/> |
| <Class name="kafka.server.Fetching"/> |
| <Class name="kafka.server.Truncating"/> |
| <Class name="kafka.server.addPartition"/> |
| <Class name="kafka.server.defaultError"/> |
| <Class name="kafka.server.genericErrorSupported"/> |
| <Class name="kafka.server.metadata.DefaultClientIdEntity"/> |
| <Class name="kafka.server.metadata.DefaultIpEntity"/> |
| <Class name="kafka.server.metadata.DefaultUserDefaultClientIdEntity"/> |
| <Class name="kafka.server.metadata.DefaultUserEntity"/> |
| <Class name="org.apache.kafka.connect.runtime.SinkConnectorConfig"/> |
| <Class name="org.apache.kafka.connect.runtime.SourceConnectorConfig"/> |
| </Or> |
| <Bug pattern="HSM_HIDING_METHOD"/> |
| </Match> |
| |
| <Match> |
| <!-- New warning type added when we upgraded from spotbugs 4.8.6 to 4.9.4. |
| These are possibly real bugs, and have not been evaluated, they were just bulk excluded to unblock upgrading Spotbugs. |
| --> |
| <Or> |
| <Class name="org.apache.kafka.common.security.ssl.SslFactory$SslEngineValidator"/> |
| <Class name="org.apache.kafka.server.authorizer.Authorizer"/> |
| </Or> |
| <Bug pattern="SF_SWITCH_FALLTHROUGH"/> |
| </Match> |
| |
| </FindBugsFilter> |