<?xml version="1.0" encoding="UTF-8"?>
<!--
   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 some irrelevant serialization warnings -->
  <Match>
    <Class name="org.apache.hadoop.mapred.gridmix.GridmixRecord$Comparator" />
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE" />
  </Match>

  <!-- The called methods actually might throw Exceptions -->
  <Match>
    <Class name="org.apache.hadoop.mapred.gridmix.ExecutionSummarizer"/>
    <Method name="processJobState"/>
    <Bug pattern="REC_CATCH_EXCEPTION"/>
    <Bug code="REC"/>
  </Match>

  <!-- This has been done knowingly and meant to fool JVM so that it doesn't optimize code -->
  <Match>
    <Class name="org.apache.hadoop.mapred.gridmix.emulators.resourceusage.CumulativeCpuUsageEmulatorPlugin$DefaultCpuUsageEmulator"/>
    <Field name="returnValue"/>
    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
  </Match>
</FindBugsFilter>
