<!--
   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>
     <Match>
       <Package name="org.apache.hadoop.record.compiler.generated" />
     </Match>
     <Match>
       <Bug pattern="EI_EXPOSE_REP" />
     </Match>
     <Match>
       <Bug pattern="EI_EXPOSE_REP2" />
     </Match>
     <Match>
       <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
     </Match>
     <Match>
       <Class name="~.*_jsp" />
       <Bug pattern="DLS_DEAD_LOCAL_STORE" />
     </Match>
     <Match>
       <Class name="~.*_jspx" />
       <Bug pattern="DLS_DEAD_LOCAL_STORE" />
     </Match>
     <Match>
       <Field name="_jspx_dependants" />
       <Bug pattern="UWF_UNWRITTEN_FIELD" />
     </Match>
     <!-- 
       Inconsistent synchronization for Client.Connection.out is
       is intentional to make a connection to be closed instantly. 
     --> 
     <Match>
       <Class name="org.apache.hadoop.ipc.Client$Connection" />
       <Field name="out" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
     </Match>
     <!-- 
       Ignore Cross Scripting Vulnerabilities
     -->
     <Match>
       <Package name="~org.apache.hadoop.mapred.*" />
       <Bug code="XSS" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.taskdetails_jsp" />
       <Bug code="HRS" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.jobdetails_jsp"/>
       <Bug pattern="HRS_REQUEST_PARAMETER_TO_HTTP_HEADER"/>
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.taskstats_jsp"/>
       <Bug pattern="HRS_REQUEST_PARAMETER_TO_HTTP_HEADER"/>
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.jobtasks_jsp"/>
       <Bug pattern="HRS_REQUEST_PARAMETER_TO_HTTP_HEADER"/>
     </Match>
     <!--
       Ignore warnings where child class has the same name as
       super class. Classes based on Old API shadow names from
       new API. Should go off after HADOOP-1.0
     -->
     <Match>
       <Class name="~org.apache.hadoop.mapred.*" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS" />
     </Match>
     <Match>
       <Class name="~org.apache.hadoop.mapred.*" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE" />
     </Match>
     <Match>
       <Class name="~org.apache.hadoop.mapred.lib.aggregate.*" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE" />
     </Match>
     <Match>
       <Class name="~org.apache.hadoop.mapred.join.*" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.SequenceFileInputFilter$Filter" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE" />
     </Match>
     <Match>
       <Class name="~org.apache.hadoop.util.*" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS" />
     </Match>
     <Match>
       <Class name="~org.apache.hadoop.filecache.*" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS" />
     </Match>
     <!--
       Ignore warnings for usage of System.exit. This is
       required and have been well thought out
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.Child$2" />
       <Method name="run" />
       <Bug pattern="DM_EXIT" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.JobTracker" />
       <Method name="addHostToNodeMapping" />
       <Bug pattern="DM_EXIT" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.Task" />
       <Or>
       <Method name="done" />
       <Method name="commit" />
       <Method name="statusUpdate" />
       </Or>
       <Bug pattern="DM_EXIT" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.JobTracker" />
       <Field name="clock" />
       <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.Task$TaskReporter" />
       <Method name="run" />
       <Bug pattern="DM_EXIT" />
     </Match>
     <!--
       We need to cast objects between old and new api objects
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.OutputCommitter" />
       <Bug pattern="BC_UNCONFIRMED_CAST" />
     </Match>
     <!--
       We intentionally do the get name from the inner class
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.TaskTracker$MapEventsFetcherThread" />
       <Method name="run" />
       <Bug pattern="IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.FileOutputCommitter" />
       <Or>
       <Method name="commitJob" />
       <Method name="recoverTask" />
       <Method name="isRecoverySupported" />
       </Or>
       <Bug pattern="NM_WRONG_PACKAGE" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.OutputCommitter" />
       <Or>
       <Method name="abortJob" />
       <Method name="commitJob" />
       <Method name="cleanupJob" />
       <Method name="recoverTask" />
       <Method name="isRecoverySupported" />
       </Or>
       <Bug pattern="NM_WRONG_PACKAGE_INTENTIONAL" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.TaskCompletionEvent" />
       <Or>
       <Method name="setTaskStatus" />
       <Method name="setTaskAttemptId" />
       </Or>
       <Bug pattern="NM_WRONG_PACKAGE" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.lib.db.DBInputFormat$DBRecordReader" />
       <Method name="next" />
       <Bug pattern="NM_WRONG_PACKAGE_INTENTIONAL" />
     </Match>
     <!--
       Ignoring this warning as resolving this would need a non-trivial change in code 
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.lib.aggregate.ValueAggregatorBaseDescriptor" />
       <Method name="configure" />
       <Field name="maxNumItems" />
       <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
     </Match>
     <!--
       Comes from org.apache.jasper.runtime.ResourceInjector. Cannot do much.
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.jobqueue_005fdetails_jsp" />
       <Field name="_jspx_resourceInjector" />
       <Bug pattern="SE_BAD_FIELD" />
     </Match>
     <!--
       Storing textInputFormat and then passing it as a parameter. Safe to ignore.
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.lib.aggregate.ValueAggregatorJob" />
       <Method name="createValueAggregatorJob" />
       <Bug pattern="DLS_DEAD_STORE_OF_CLASS_LITERAL" />
     </Match>
     <!--
       Can remove this after the upgrade to findbugs1.3.8
     -->
     <Match>
       <Class name="org.apache.hadoop.mapred.lib.db.DBInputFormat" />
       <Method name="getSplits" />
       <Bug pattern="DLS_DEAD_LOCAL_STORE" />
     </Match>
     <!--
       org.apache.hadoop.mapred.IndexCache is thread-safe. It does not need
       synchronous access. 
      -->
     <Match>
       <Class name="org.apache.hadoop.mapred.TaskTracker" />
       <Field name="indexCache" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
     </Match>
    <!--
      None of the following variables should be referenced by any thread
      but the collection thread in MapTask
    -->
     <Match>
       <Class name="org.apache.hadoop.mapred.MapTask$MapOutputBuffer" />
       <Field name="kvindex" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.MapTask$MapOutputBuffer" />
       <Field name="bufferRemaining" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.MapTask$MapOutputBuffer" />
       <Field name="equator" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
     </Match>

    <!-- This is spurious. -->
    <Match>
      <Class name="org.apache.hadoop.mapred.MapTask$MapOutputBuffer$SpillThread" />
      <Method name="run" />
      <Bug pattern="UL_UNRELEASED_LOCK_EXCEPTION_PATH" />
    </Match>

     <Match>
       <Class name="org.apache.hadoop.mapreduce.task.reduce.MergeThread" />
       <Field name="inputs" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
     </Match>
     <Match>
       <Class name="org.apache.hadoop.mapred.JobTracker" />
       <Method name="updateTaskTrackerStatus" />
       <Bug pattern="DLS_DEAD_LOCAL_STORE" />
     </Match>

    <!--
     This class is unlikely to get subclassed, so ignore
    -->
     <Match>
       <Class name="org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl" />
       <Bug pattern="SC_START_IN_CTOR" />
     </Match>
    <!--
     This class is unlikely to get subclassed, so ignore
    -->
    <Match>
     <Class name="org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl" />
     <Bug pattern="SC_START_IN_CTOR" />
    </Match>

    <!--
      Do not bother if equals is not implemented. We will not need it here
    -->
     <Match>
      <Class name="org.apache.hadoop.mapreduce.task.reduce.ShuffleSchedulerImpl$Penalty" />
      <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.mapred.Task" />
       <Method name="reportFatalError" />
       <Bug pattern="DM_EXIT" />
     </Match>

     <!-- 
        core changes 
     -->
     <Match>
       <Class name="~org.apache.hadoop.*" />
       <Bug code="MS" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.fs.FileSystem" />
       <Method name="checkPath" />
       <Bug pattern="ES_COMPARING_STRINGS_WITH_EQ" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.fs.kfs.KFSOutputStream" />
       <Field name="path" />
       <Bug pattern="URF_UNREAD_FIELD" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.fs.kfs.KosmosFileSystem" />
       <Method name="initialize" />
       <Bug pattern="DM_EXIT" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.io.Closeable" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_INTERFACE" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.security.AccessControlException" />
       <Bug pattern="NM_SAME_SIMPLE_NAME_AS_SUPERCLASS" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.record.meta.Utils" />
       <Method name="skip" />
       <Bug pattern="BC_UNCONFIRMED_CAST" />
     </Match>

     <!--
        The compareTo method is actually a dummy method that just
        throws excpetions. So, no need to override equals. Ignore
     -->
     <Match>
       <Class name="org.apache.hadoop.record.meta.RecordTypeInfo" />
       <Bug pattern="EQ_COMPARETO_USE_OBJECT_EQUALS" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.util.ProcfsBasedProcessTree" />
       <Bug pattern="DMI_HARDCODED_ABSOLUTE_FILENAME" />
     </Match>

     <!--
       Streaming, Examples
     -->
     <Match>
       <Class name="org.apache.hadoop.streaming.StreamUtil$TaskId" />
       <Bug pattern="URF_UNREAD_FIELD" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.examples.DBCountPageView" />
       <Method name="verify" />
       <Bug pattern="OBL_UNSATISFIED_OBLIGATION" />
     </Match>

     <Match>
       <Class name="org.apache.hadoop.examples.ContextFactory" />
       <Method name="setAttributes" />
       <Bug pattern="OBL_UNSATISFIED_OBLIGATION" />
     </Match>

    <Match>
       <Class name="org.apache.hadoop.mapred.TaskScheduler$QueueRefresher" />
       <Bug pattern="SIC_INNER_SHOULD_BE_STATIC" />
    </Match>

    <Match>
      <Class name="org.apache.hadoop.examples.terasort.TeraInputFormat$1" />
      <Method name="run" />
      <Bug pattern="DM_EXIT" />
    </Match>
    <Match>
      <Class name="org.apache.hadoop.examples.terasort.TeraOutputFormat$TeraOutputCommitter"/>
      <Bug pattern="NM_WRONG_PACKAGE_INTENTIONAL" />
    </Match>
    <Match>
      <Class name="org.apache.hadoop.examples.terasort.Unsigned16" />
      <Method name="getHexDigit"/>
      <Bug pattern="ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT" />
     </Match>

     <!-- 
	   False positive of FindBugs complaining that initializationPoller and
	   started were accessed through
	   CapacitySchedulerQueueRefresher.refreshQueues without explicitly holding
	   the lock of CapacityTaskScheduler. The lock is in fact acquired by
	   JobTracker prior to calling QueueManager.refereshQueues - this is
	   necessary to ensure the order of locking (TaskScheduler ->
	   QueueManager).
     --> 
    <Match>
       <Class name="org.apache.hadoop.mapred.CapacityTaskScheduler" />
       <Field name="initializationPoller" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
    </Match>
    <Match>
       <Class name="org.apache.hadoop.mapred.CapacityTaskScheduler" />
       <Field name="started" />
       <Bug pattern="IS2_INCONSISTENT_SYNC" />
    </Match>
  
   <!-- Yarn excludes -->
  <Match>
    <Class name="org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl" />
    <Method name="computeSlotMillis" />
    <Bug pattern="DB_DUPLICATE_BRACHES" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1" />
    <Bug pattern="DM_EXIT" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.mapred.LocalContainerLauncher$SubtaskRunner" />
    <Bug pattern="DM_EXIT" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.mapreduce\.v2\.app\.job\.impl\.TaskImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <Match>
    <Class name="~org\.apache\.hadoop\.mapreduce\.v2\.app\.job\.impl\.JobImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.mapreduce\.v2\.app\.job\.impl\.TaskAttemptImpl.*" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.mapreduce\.v2\.app\.recover\.RecoveryService" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <Match>
    <Class name="~org\.apache\.hadoop\.mapreduce\.v2\.app\.rm\.RMContainerAllocator" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl" />
    <Method name="computeSlotMillis" />
   <Bug pattern="DB_DUPLICATE_BRANCHES" />
  </Match>

   <Match>
    <Package name="org.apache.hadoop.yarn.proto" />
  </Match>
  <Match>
    <Package name="org.apache.hadoop.mapreduce.v2.hs.proto" />
  </Match>
  <Match>
    <Class name="~org\.apache\.hadoop\.mapreduce\.v2\.proto.*" />
  </Match>
  <Match>
    <Package name="org.apache.hadoop.mapred.proto" />
  </Match>
  
   <!--
     The below fields are accessed locally and only via methods that are synchronized. 
     -->
   <Match>
     <Class name="org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator" />
     <Or>
      <Field name="mapResourceRequest" />
      <Field name="reduceResourceRequest" />
      <Field name="maxReduceRampupLimit" />
      <Field name="reduceSlowStart" />
     </Or>
     <Bug pattern="IS2_INCONSISTENT_SYNC" />
   </Match>
   <Match>
     <Class name="org.apache.hadoop.mapreduce.v2.app.local.LocalContainerAllocator" />
     <Or>
      <Field name="retryInterval" />
      <Field name="retrystartTime" />
     </Or>
     <Bug pattern="IS2_INCONSISTENT_SYNC" />
   </Match>
   <Match>
     <Class name="org.apache.hadoop.mapreduce.v2.app.commit.CommitterEventHandler" />
      <Field name="commitThreadCancelTimeoutMs" />
     <Bug pattern="IS2_INCONSISTENT_SYNC" />
   </Match>
 
   <Match>
     <Class name="org.apache.hadoop.mapred.ShuffleHandler" />
      <Field name="sslFileBufferSize" />
     <Bug pattern="IS2_INCONSISTENT_SYNC" />
   </Match> 

   <Match>
     <Class name="org.apache.hadoop.mapred.ClientServiceDelegate" />
      <Method name="invoke" />
     <Bug pattern="SWL_SLEEP_WITH_LOCK_HELD" />
   </Match>
   
  <Match>
    <Class name="org.apache.hadoop.mapreduce.util.ProcessTree" />
     <Method name="sendSignal" />  
    <Bug pattern="NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH" />
  </Match>
   
  <Match>
    <Class name="org.apache.hadoop.mapreduce.util.ProcessTree" />
     <Method name="isSetsidSupported" />  
    <Bug pattern="NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH" />
  </Match>

  <Match>
    <Class name="org.apache.hadoop.mapreduce.util.ProcessTree" />
     <Method name="isSetsidSupported" />
    <Bug pattern="NP_NULL_ON_SOME_PATH_EXCEPTION" />
  </Match>
   
  <Match>
    <Class name="org.apache.hadoop.mapreduce.v2.hs.CachedHistoryStorage$1" />
    <Bug pattern="SE_BAD_FIELD_INNER_CLASS" />
  </Match>
   
 </FindBugsFilter>
