<!--
   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.
-->

<FindBugsFilter>
  <!-- Ignore PB Generated Code -->
  <Match>
    <Package name="org.apache.hadoop.yarn.proto" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.ipc\.RpcProtos.*" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.service.AbstractService" />
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER" />
  </Match>

  <!-- Ignore unchecked Event casts -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.nodemanager\.containermanager\.application\.ApplicationImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.nodemanager\.containermanager\.container\.ContainerImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.nodemanager\.containermanager\.localizer\.LocalizedResource.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.nodemanager\.containermanager\.localizer\.ResourceLocalizationService.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.rmapp\.RMAppImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.rmapp\.attempt\.RMAppAttemptImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptMetrics" />
    <Method name="getLocalityStatistics" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptMetrics" />
    <Method name="incNumAllocatedContainers"/>
    <Bug pattern="VO_VOLATILE_INCREMENT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl$AppRejectedTransition" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.rmcontainer\.RMContainerImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.rmnode\.RMNodeImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.RMAppManager.*" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.scheduler\.capacity\.CapacityScheduler.*" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.resourcemanager\.scheduler\.fifo\.FifoScheduler.*" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.nodemanager\.containermanager\.logaggregation\.LogAggregationService.*" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.nodemanager\.containermanager\.loghandler\.NonAggregatingLogHandler.*" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainersLauncher" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <!-- Object cast is based on the event type -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.timelineservice.NMTimelinePublisher" />
    <Method name="publishApplicationEvent" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.timelineservice.NMTimelinePublisher" />
    <Method name="publishLocalizationEvent" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.metrics.TimelineServiceV2Publisher$TimelineV2EventHandler" />
     <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <!-- Ignore intentional switch fallthroughs -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerImpl" />
    <Method name="finished" />
    <Bug pattern="SF_SWITCH_FALLTHROUGH" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ContainerLocalizer" />
    <Method name="localizeFiles" />
    <Bug pattern="SF_SWITCH_FALLTHROUGH" />
  </Match>

  <!-- Ignore some irrelevant serialization warnings -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceRetentionSet$LRUComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.exceptions.impl.pb.YarnRemoteExceptionPBImpl" />
    <Field name="builder" />
    <Bug pattern="SE_BAD_FIELD" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.util\.BuilderUtils.*" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.resource.Priority$Comparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.policy.FifoComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.policy.FairOrderingPolicy$FairComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
    <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.policy.CompoundComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.policy.PriorityComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.policy.RecoveryComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.PartitionedQueueComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <!-- Ignore some irrelevant class name warning -->
  <Match>
    <Class name="org.apache.hadoop.yarn.api.records.SerializedException" />
    <Bug pattern="NM_CLASS_NOT_EXCEPTION" />
  </Match>

  <!-- Inconsistent sync warning - only start() is synchronized-->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.LogAggregationService" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.AllocationFileLoaderService" />
    <Field name="allocFile" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <!-- Inconsistent sync warning - minimumAllocation is only initialized once and never changed -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler" />
    <Field name="minimumAllocation" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FSSchedulerNode" />
    <Method name="reserveResource" />
    <Bug pattern="BC_UNCONFIRMED_CAST" /> 
  </Match>
  <!-- Inconsistent sync warning - reinitialize read from other queue does not need sync-->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue" />
    <Or>
      <Field name="absoluteCapacity" />
      <Field name="absoluteMaxCapacity" />
      <Field name="acls" />
      <Field name="capacity" />
      <Field name="maxApplications" />
      <Field name="maxApplicationsPerUser" />
      <Field name="maximumCapacity" />
      <Field name="state" />
      <Field name="userLimit" />
      <Field name="userLimitFactor" />
      <Field name="maxAMResourcePerQueuePercent" />
      <Field name="lastClusterResource" />
      <Field name="pendingOrderingPolicy" />
      <Field name="pendingOPForRecoveredApps" />
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue" />
    <Or>
      <Field name="absoluteCapacity" />
      <Field name="absoluteMaxCapacity" />
      <Field name="acls" />
      <Field name="capacity" />
      <Field name="maximumCapacity" />
      <Field name="state" />
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AbstractCSQueue" />
    <Or>
      <Field name="absoluteCapacity" />
      <Field name="absoluteMaxCapacity" />
      <Field name="acls" />
      <Field name="capacity" />
      <Field name="maximumCapacity" />
      <Field name="state" />
      <Field name="labelManager" />
      <Field name="defaultLabelExpression" />
      <Field name="accessibleLabels" />
      <Field name="absoluteNodeLabelCapacities" />
      <Field name="reservationsContinueLooking" />
      <Field name="absoluteCapacityByNodeLabels" />
      <Field name="authorizer" />
      <Field name="parent" />
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <!-- Inconsistent sync warning - scheduleAsynchronously is only initialized once and never changed -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler" />
    <Field name="scheduleAsynchronously" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <!-- Inconsistent sync warning - updateInterval is only initialized once and never changed -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler" />
    <Field name="updateInterval" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <!-- Inconsistent sync warning - callDurationMetrics is only initialized once and never changed -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler" />
    <Field name="fsOpDurations" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <!-- Inconsistent sync warning - numRetries is only initialized once and never changed -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore" />
    <Field name="numRetries" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore" />
    <Field name="resourceManager"/>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.security.DelegationTokenRenewer"/>
    <Field name="renewalTimer" />
    <Bug code="IS"/>
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.client.NMClientImpl$NMCommunicator"/>
    <Field name="containerManager" />
    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
  </Match>

  <!-- Don't care if putIfAbsent value is ignored -->
  <Match>
    <Package name="org.apache.hadoop.yarn.factories.impl.pb" />
    <Bug pattern="RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED" />
  </Match>

  <!-- Intended System.exit calls -->
  <Match>
    <Class name="org.apache.hadoop.yarn.webapp.Dispatcher$1" />
    <Bug pattern="DM_EXIT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.webapp.WebApps$Builder" />
    <Bug pattern="DM_EXIT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.security.DelegationTokenRenewer$DelegationTokenCancelThread" />
    <Bug pattern="DM_EXIT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.YarnUncaughtExceptionHandler"/>
    <Bug pattern="DM_EXIT"/>
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.event.AsyncDispatcher$2"/>
    <Method name="run" />
    <Bug pattern="DM_EXIT"/>
  </Match>

  <!-- AsyncDispatcher will kill the process if there is an error dispatching -->
  <Match>
    <Class name="org.apache.hadoop.yarn.event.AsyncDispatcher" />
    <Method name="dispatch" />
    <Bug pattern="DM_EXIT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.event.EventDispatcher$EventProcessor" />
    <Method name="run" />
    <Bug pattern="DM_EXIT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.NodeManager" />
    <Method name="initAndStartNodeManager" />
    <Bug pattern="DM_EXIT" />
  </Match>
 
  <!-- Ignore heartbeat exception when killing localizer -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ContainerLocalizer" />
    <Method name="localizeFiles" />
    <Bug pattern="DE_MIGHT_IGNORE" />
  </Match>

  <!-- Ignore EI_EXPOSE_REP in PolicyProviders -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.security.authorize.RMPolicyProvider" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.security.authorize.NMPolicyProvider" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>


  <!-- Ignore EI_EXPOSE_REP2 in Log services -->
  <Match>
    <Class name="org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat$LogValue" />
    <Bug pattern="EI_EXPOSE_REP2" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AppLogAggregatorImpl" />
    <Bug pattern="EI_EXPOSE_REP2" />
  </Match>
  
   <!-- /proc/mounts is always in the same place -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler" />
    <Method name="parseMtab" />
    <Bug pattern="DMI_HARDCODED_ABSOLUTE_FILENAME" />
  </Match>

  <!-- rmClient can be ignored as only code blocks outside of rpc calls need to be synchronized -->
  <Match>
    <Class name="org.apache.hadoop.yarn.client.AMRMClientImpl" />
    <Field name="rmClient" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <!-- Null pointer exception needs to be ignored here as this is never going to occur. -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl" />
    <Method name="decrementFileCountForLocalCacheDirectory" />
    <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" />
  </Match>

  <!-- Null pointer exception needs to be ignored here as this is never going to occur. -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl" />
    <Method name="getPathForLocalization" />
    <Bug pattern="NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE" />
  </Match>

  <!-- This type cast problem will never occur. -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl" />
    <Method name="handle" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <!-- Ignore SerializedException does not extend Exception -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.api.records.SerializedException" />
    <Bug pattern="NM_CLASS_NOT_EXCEPTION" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <!-- Multithreaded correctness warnings need to be ignored here as this is for creating the singleton.-->
  <Match>
      <Class name="org.apache.hadoop.yarn.server.resourcemanager.security.authorize.RMPolicyProvider"/>
      <Bug pattern="DC_DOUBLECHECK" />
  </Match>

  <!-- ApplicationClassLoader is deprecated and moved to hadoop-common; ignore
       warning on the identical name as it should be removed later -->
  <Match>
    <Class name="org.apache.hadoop.yarn.util.ApplicationClassLoader"/>
    <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS"/>
  </Match>

   <!-- It is only changed on re-initialization the warnings are for access from a test function. -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue" />
    <Field name="reservationsContinueLooking" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue" />
    <Field name="reservationsContinueLooking" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <!--
  This code is meant to deserialize this way...subclasses of will need to
  instantiate their own JsonSerDeser instances if they want to deserialize.
  -->
  <Match>
    <Class name="org.apache.hadoop.registry.client.binding.JsonSerDeser"/>
    <Bug pattern="UI_INHERITANCE_UNSAFE_GETRESOURCE"/>
  </Match>

  <!-- Ignore the false alarms on DM_DEFAULT_ENCODING (encoding already set) -->
  <Match>
    <Class name="org.apache.hadoop.yarn.logaggregation.AggregatedLogFormat$LogReader" />
    <Bug pattern="DM_DEFAULT_ENCODING" />
  </Match>

  <!-- Ignore EI_EXPOSE_REP2 in timeline service -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.timeline.util.LeveldbUtils$KeyParser" />
    <Bug pattern="EI_EXPOSE_REP2" />
  </Match>

  <!-- Ignore unrelated RV_RETURN_VALUE_IGNORED_BAD_PRACTICE warnings. No need to wait for result from executor service -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainersLauncher" />
    <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.sharedcache.SharedCacheUploadService" />
    <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerApplicationAttempt" />
    <Field name="queue" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler" />
    <Field name="allocConf" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode" />
    <Field name="numContainers" />
    <Bug pattern="VO_VOLATILE_INCREMENT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.AbstractCSQueue" />
    <Field name="numContainers" />
    <Bug pattern="VO_VOLATILE_INCREMENT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue" />
    <Field name="numApplications" />
    <Bug pattern="VO_VOLATILE_INCREMENT" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler" />
    <Method name="recoverContainersOnNode" />
    <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.AbstractYarnScheduler" />
    <Or>
      <Field name="rmContext" />
      <Field name="applications" />
      <Field name="activitiesManager" />
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>
  <!-- Ignore SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING warnings for Timeline Phoenix storage. -->
  <!-- Since we're using dynamic columns, we have to generate SQL statements dynamically -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.timelineservice.storage.PhoenixOfflineAggregationWriterImpl" />
    <Or>
      <Method name="storeEntityVariableLengthFields" />
      <Method name="writeAggregatedEntity" />
    </Or>
    <Bug pattern="SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING" />
  </Match>
  
  <!-- Following fields are used in ErrorsAndWarningsBlock, which is not a part of analysis of findbugs -->
  <Match>
    <Class name="org.apache.hadoop.yarn.util.Log4jWarningErrorMetricsAppender$Element" />
    <Or>
      <Field name="count" />
      <Field name="timestampSeconds" />
    </Or>
    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.api.records.ResourceRequest" />
    <Method name="equals" />
    <Bug pattern="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE" />
  </Match>
  <Match>
    <Package name="org.apache.hadoop.yarn.api.records.impl.pb" />
    <Bug pattern="NP_BOOLEAN_RETURN_NULL" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.webapp.dao.ActivityNodeInfo"/>
    <Or>
      <Field name="allocationState" />
      <Field name="diagnostic" />
      <Field name="name" />
      <Field name="requestPriority" />
      <Field name="appPriority" />
    </Or>
    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD" />
  </Match>
</FindBugsFilter>
