<!--
   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>
    <Package name="org.apache.hadoop.yarn.federation.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="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>

  <!-- Ignore exposed internal representations -->
  <Match>
    <Class name="org.apache.hadoop.yarn.api.records.Resource" />
    <Method name="getResources" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptMetrics" />
    <Method name="getLocalityStatistics" />
    <Bug pattern="EI_EXPOSE_REP" />
  </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.client.api.impl.AMRMClientImpl$ProfileCapabilityComparator" />
    <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.fair.policies.DominantResourceFairnessPolicy$DominantResourceFairnessComparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.DominantResourceFairnessPolicy$DominantResourceFairnessComparator2" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.policies.DominantResourceFairnessPolicy$DominantResourceFairnessComparatorN" />
    <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>
  <!-- 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" />
    <Or>
      <Field name="resourceManager"/>
      <Field name="baseEpoch"/>
    </Or>
    <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>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.federation.policies.RouterPolicyFacade"/>
    <Or>
      <Field name="globalConfMap"/>
      <Field name="globalPolicyMap"/>
    </Or>
    <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>
  <Match>
    <Class name="org.apache.hadoop.yarn.server.router.security.authorize.RouterPolicyProvider" />
    <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>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.security.authorize.NMPolicyProvider"/>
    <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>

  <!-- Ignore VO_VOLATILE_INCREMENT, they will be protected by writeLock -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue$User" />
    <Or>
      <Field name="pendingApplications" />
      <Field name="activeApplications" />
    </Or>
    <Bug pattern="VO_VOLATILE_INCREMENT" />
  </Match>


  <!-- Ignore false alert for UL_UNRELEASED_LOCK_EXCEPTION_PATH -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler$ResourceCommitterService"/>
    <Method name="run" />
    <Bug pattern="UL_UNRELEASED_LOCK_EXCEPTION_PATH" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.amrmproxy.FederationInterceptor" />
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <!-- Ignore MS_EXPOSE_REP -->
    <Match>
    <Class name="org.apache.hadoop.yarn.util.resource.ResourceUtils" />
    <Method name="getResourceTypesArray" />
    <Bug pattern="MS_EXPOSE_REP" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.yarn.util.resource.ResourceUtils" />
    <Method name="getResourceNamesArray" />
    <Bug pattern="MS_EXPOSE_REP" />
  </Match>

  <!-- EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.gpu.AssignedGpuDevice" />
    <Method name="equals" />
    <Bug pattern="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC" />
  </Match>

  <!-- Null pointer exception needs to be ignored here as Findbugs doesn't properly detect code logic -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.placement.SingleConstraintAppPlacementAllocator" />
    <Method name="validateAndSetSchedulingRequest" />
    <Bug pattern="NP_NULL_ON_SOME_PATH" />
  </Match>

  <!-- Expose the reference to avoid performance overhead -->
  <Match>
    <Class name="org.apache.hadoop.yarn.api.records.Resource" />
    <Method name="getResources" />
    <Bug pattern="EI_EXPOSE_REP" />
  </Match>

  <!-- The called method signature is String emptyToNull(@Nullable String string) in guava 27, so this should be ignored -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.NodeHealthCheckerService"/>
    <Method name="getHealthReport" />
    <Bug pattern="NP_NULL_PARAM_DEREF"/>
  </Match>

  <!-- The variable is not used, but it's defined for the document model. -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.timelineservice.documentstore.collection.document.entity.TimelineEventSubDoc"/>
    <Method name="setValid" />
    <Bug pattern="URF_UNREAD_FIELD"/>
  </Match>

  <!-- The variable is not used, but it's defined for the document model. -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.timelineservice.documentstore.collection.document.entity.TimelineMetricSubDoc"/>
    <Method name="setValid" />
    <Bug pattern="URF_UNREAD_FIELD"/>
  </Match>

  <!-- The called method signature is public boolean set(@Nullable V value) in guava 27, so this should be ignored -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore$UpdateAppTransition"/>
    <Method name="transition" />
    <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
  </Match>

  <!-- The called method signature is public boolean set(@Nullable V value) in guava 27, so this should be ignored -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler"/>
    <Method name="updateApplicationPriority" />
    <Bug pattern="NP_NONNULL_PARAM_VIOLATION"/>
  </Match>

  <!-- Device files are always under /dev in production, but it's necessary to override in tests -->
  <Match>
    <Class name="org.apache.hadoop.yarn.server.nodemanager.containermanager.resourceplugin.com.nec.NECVEPlugin"/>
    <Method name="getDevices" />
    <Bug pattern="DMI_HARDCODED_ABSOLUTE_FILENAME" />
  </Match>

  <!-- Suppress warning about anonymous class for mocking. -->
  <Match>
    <Class name="~org\.apache\.hadoop\.yarn\.server\.timelineservice\.reader\.TestTimelineReaderWebServicesHBaseStorage.*" />
    <Bug pattern="UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS" />
  </Match>

  <!-- Generated files from JSON schema -->
  <Match>
    <Package name="org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.placement.schema" />
  </Match>
</FindBugsFilter>
