<!--
   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" />
       <Method name="isCommitJobRepeatable" />
       </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" />
       <Method name="isCommitJobRepeatable" />
       </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" />
      <Field name="reduceNodeLabelExpression" />
     </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>
