<!--
  Licensed 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. See accompanying LICENSE file.
-->
<FindBugsFilter>

  <Match>
    <Class name="org.apache.tez.dag.app.rm.node.AMNodeTracker" />
    <Or>
      <Field name="blacklistDisablePercent" />
      <Field name="maxTaskFailuresPerNode" />
      <Field name="nodeBlacklistingEnabled" />
      <Field name="nodeUpdatesRescheduleEnabled" />
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC" />
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.recovery\.records\.RecoveryProtos\$.*Proto"/>
    <Field name="unknownFields"/>
    <Bug pattern="SE_BAD_FIELD"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.recovery\.records\.RecoveryProtos\$.*Proto"/>
    <Field name="PARSER"/>
    <Bug pattern="MS_SHOULD_BE_FINAL"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.recovery\.records\.RecoveryProtos\$.*Proto\$Builder"/>
    <Method name="maybeForceBuilderInitialization"/>
    <Bug pattern="UCF_USELESS_CONTROL_FLOW"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.dag\.impl\.DAGImpl\$.*"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.dag\.impl\.TaskImpl\$.*"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.dag\.impl\.TaskAttemptImpl\$.*"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.dag\.impl\.VertexImpl\$.*"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.rm\.container\.AMContainerImpl\$.*"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.rm\.node\.AMNodeImpl\$.*"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.dag\.speculation\.legacy\.LegacySpeculator"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.rm\.node\.AMNodeTracker"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.rm.node.PerSourceNodeTracker" />
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="~org\.apache\.tez\.dag\.app\.rm\.TaskSchedulerManager"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.rm.DagAwareYarnTaskScheduler$PreemptOrderComparator"/>
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.launcher.ContainerLauncherManager" />
    <Method name="handle" params="org.apache.tez.dag.app.rm.ContainerLauncherEvent" returns="void" />
    <Bug pattern="BC_UNCONFIRMED_CAST" />
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.rm.TaskSchedulerContextImplWrapper"/>
    <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster$DAGAppMasterShutdownHook"/>
    <Method name="run"/>
    <Bug pattern="WA_NOT_IN_LOOP"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster"/>
    <Method name="handle" params="org.apache.tez.dag.app.dag.event.DAGAppMasterEvent" returns="void"/>
    <Bug pattern="SF_SWITCH_NO_DEFAULT"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster"/>
    <Method name="&lt;init&gt;"/>
    <Bug pattern="EI_EXPOSE_REP2"/>
  </Match>

  <Match>
    <Class name="org.apache.tez.dag.utils.TaskSpecificLaunchCmdOption"/>
    <Method name="getTaskSpecificLogParams"/>
    <Field name="tsLogParams"/>
    <Bug pattern="EI_EXPOSE_REP"/>
  </Match>

  <!-- TEZ-1952 -->
  <Match>
    <Class name="org.apache.tez.dag.app.dag.impl.Edge"/>
    <Or>
      <Field name="edgeProperty"/>
      <Field name="onDemandRouting"/>
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
  </Match>

  <!-- TEZ-1953 -->
  <Match>
    <Class name="org.apache.tez.dag.app.dag.impl.VertexImpl"/>
    <Field name="groupInputSpecList"/>
    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
  </Match>

  <!-- TEZ-1954 -->
  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster"/>
    <Or>
      <Field name="currentDAG"/>
      <Field name="lastDAGCompletionTime"/>
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
  </Match>

  <!-- TEZ-1956 -->
  <Match>
    <Class name="org.apache.tez.dag.app.rm.YarnTaskSchedulerService"/>
    <Or>
      <Field name="delayedContainerManager"/>
      <Field name="heartbeatAtLastPreemption"/>
      <Field name="localitySchedulingDelay"/>
      <Field name="preemptionPercentage"/>
      <Field name="shouldReuseContainers"/>
    </Or>
    <Bug pattern="IS2_INCONSISTENT_SYNC"/>
  </Match>

  <!-- TEZ-1957 -->
  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster$DAGAppMasterShutdownHandler"/>
    <Method name="shutdown" params="boolean" returns="void"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-1957 -->
  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster$DAGAppMasterShutdownHandler$AMShutdownRunnable"/>
    <Method name="run"/><Field name="shutdownHandlerRunning"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-1957 -->
  <Match>
    <Class name="org.apache.tez.dag.app.DAGAppMaster$DAGAppMasterShutdownHook"/>
    <Method name="run"/><Field name="shutdownHandlerRunning"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-1958 -->
  <Match>
    <Class name="org.apache.tez.dag.app.rm.LocalTaskSchedulerService$AsyncDelegateRequestHandler"/>
    <Method name="addDeallocateTaskRequest" params="java.lang.Object" returns="boolean"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-1958 -->
  <Match>
    <Class name="org.apache.tez.dag.app.rm.LocalTaskSchedulerService$AsyncDelegateRequestHandler"/>
    <Method name="run"/><Field name="taskRequestQueue"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-1959 -->
  <Match>
    <Class name="org.apache.tez.dag.app.rm.YarnTaskSchedulerService$DelayedContainerManager"/>
    <Method name="mainLoop"/><Field name="drainedDelayedContainersForTest"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-3000 -->
  <Match>
    <Class name="org.apache.tez.dag.app.rm.YarnTaskSchedulerService$DelayedContainerManager"/>
    <Method name="addDelayedContainer"/><Field name="drainedDelayedContainersForTest"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>

  <!-- TEZ-1981 -->
  <Match>
    <Class name="org.apache.tez.dag.app.dag.TaskAttempt$TaskAttemptStatus"/>
    <Field name="id"/>
    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
  </Match>

  <!-- TEZ-1981 -->
  <Match>
    <Class name="org.apache.tez.dag.app.dag.TaskAttempt$TaskAttemptStatus"/>
    <Field name="state"/>
    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
  </Match>

  <!-- TEZ-4281 -->
  <Match>
    <Class name="org.apache.tez.dag.app.dag.impl.DAGImpl"/>
    <Method name="getLogDirs"/>
    <Bug pattern="EI_EXPOSE_REP"/>
  </Match>
  <Match>
    <Class name="org.apache.tez.dag.app.dag.impl.DAGImpl"/>
    <Method name="setLogDirs"/>
    <Bug pattern="EI_EXPOSE_REP2"/>
  </Match>

</FindBugsFilter>
