<?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>
    <Class name="org.apache.giraph.comm.flow_control.CreditBasedFlowControl"/>
    <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>
