<?xml version="1.0"?>

<!--
   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>
    <Class name="org.apache.giraph.hive.column.HiveColumnWriter"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.hive.record.HiveRecordWriter"/>
    <Bug pattern="BC_UNCONFIRMED_CAST"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.conf.AllOptions"/>
    <Bug pattern="DM_DEFAULT_ENCODING"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.zk.ZooKeeperManager"/>
    <Bug pattern="DM_DEFAULT_ENCODING"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.examples.SimpleFailComputation"/>
    <Bug pattern="DM_EXIT"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.graph.GraphTaskManager$OverrideExceptionHandler"/>
    <Bug pattern="DM_EXIT"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.worker.BspServiceWorker"/>
    <Bug pattern="DM_EXIT"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.examples.SimpleCheckpoint$SimpleCheckpointComputation"/>
    <Bug pattern="DM_EXIT"/>
  </Match>
  <Match>
    <Bug pattern="EI_EXPOSE_REP"/>
  </Match>
  <Match>
    <Bug pattern="EI_EXPOSE_REP2"/>
  </Match>
  <Match>
    <Bug pattern="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC"/>
    <Class name="org.apache.giraph.jython.wrappers.JythonWrapperBase"/>
  </Match>
  <Match>
    <Bug pattern="EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC"/>
    <Class name="org.apache.giraph.jython.wrappers.JythonWritableWrapper"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.comm.netty.NettyClient"/>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>
  <Match>
    <Or>
      <Class name="org.apache.giraph.comm.flow_control.CreditBasedFlowControl"/>
      <Class name="org.apache.giraph.comm.flow_control.CreditBasedFlowControl$2"/>
    </Or>
    <Bug pattern="JLM_JSR166_UTILCONCURRENT_MONITORENTER"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.io.formats.PseudoRandomLocalEdgesHelper"/>
    <Bug pattern="RV_ABSOLUTE_VALUE_OF_RANDOM_INT"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.master.BspServiceMaster"/>
    <Bug pattern="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE"/>
  </Match>
  <Match>
    <Class name="org.apache.giraph.partition.PartitionBalancer$PartitionOwnerComparator"/>
    <Bug pattern="SE_COMPARATOR_SHOULD_BE_SERIALIZABLE"/>
  </Match>
  <Match>
    <Class name="~org.apache.giraph.function.primitive.PrimitiveRefs.*Ref"/>
    <Bug pattern="URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD"/>
  </Match>
  <Match>
    <!-- Java Serialization is not used, so this is never an actual issue.
      On the other hand, Kryo needs lambdas to be Serializable to work. -->
    <Bug pattern="SE_BAD_FIELD,SE_COMPARATOR_SHOULD_BE_SERIALIZABLE,SE_NO_SERIALVERSIONID" />
  </Match>
</FindBugsFilter>
