Program: 87170
Project: 87170
Buggy source:
@Test public void post() throws Exception {
  ClientDispatcher myClient=new ClientDispatcher();
  TransportImpl myTransport=new TransportImpl(null);
  myClient.init(myTransport);
  FDUtil.ensureFD(_tport1.getFD());
  FDUtil.ensureFD(_tport2.getFD());
  System.err.println("String_Node_Str");
  for (int i=0; i < 5; i++) {
    ByteBuffer myBuffer=ByteBuffer.allocate(4);
    myBuffer.putInt(i);
    Proposal myProp=new Proposal("String_Node_Str",myBuffer.array());
    myClient.send(new Envelope(myProp),_tport2.getLocalAddress());
    VoteOutcome myEv=myClient.getNext(10000);
    Assert.assertFalse((myEv == null));
    Assert.assertTrue(myEv.getResult() == VoteOutcome.Reason.VALUE);
    Assert.assertTrue(myEv.getSeqNum() == i);
  }
  Thread.sleep(5000);
  System.err.println("String_Node_Str");
  _node3=new ServerDispatcher(new HowlLogger(_node3Log));
  _tport3=new TransportImpl(new FailureDetectorImpl(5000,FailureDetectorImpl.OPEN_PIN));
  _node3.init(_tport3);
  _node3.getAcceptorLearner().setRecoveryGracePeriod(5000);
  FDUtil.ensureFD(_tport3.getFD());
  System.err.println("String_Node_Str");
  ByteBuffer myBuffer=ByteBuffer.allocate(4);
  myBuffer.putInt(67);
  Proposal myProp=new Proposal("String_Node_Str",myBuffer.array());
  myClient.send(new Envelope(myProp),_tport2.getLocalAddress());
  VoteOutcome myOutcome=myClient.getNext(10000);
  System.err.println("String_Node_Str");
  Thread.sleep(15000);
  Assert.assertTrue(_node2.getAcceptorLearner().getLowWatermark().getSeqNum() != _node3.getAcceptorLearner().getLowWatermark().getSeqNum());
  Assert.assertFalse(_node3.getCore().getCommon().getNodeState().test(NodeState.State.RECOVERING));
  Thread.sleep(5000);
  System.err.println("String_Node_Str");
  myTransport.terminate();
}

Fixed version (ground truth):
@Test public void post() throws Exception {
  ClientDispatcher myClient=new ClientDispatcher();
  TransportImpl myTransport=new TransportImpl(null);
  myClient.init(myTransport);
  FDUtil.ensureFD(_tport1.getFD());
  FDUtil.ensureFD(_tport2.getFD());
  System.err.println("String_Node_Str");
  for (int i=0; i < 5; i++) {
    ByteBuffer myBuffer=ByteBuffer.allocate(4);
    myBuffer.putInt(i);
    Proposal myProp=new Proposal("String_Node_Str",myBuffer.array());
    myClient.send(new Envelope(myProp),_tport2.getLocalAddress());
    VoteOutcome myEv=myClient.getNext(10000);
    Assert.assertFalse((myEv == null));
    Assert.assertTrue(myEv.getResult() == VoteOutcome.Reason.VALUE);
    Assert.assertTrue(myEv.getSeqNum() == i);
  }
  Thread.sleep(5000);
  System.err.println("String_Node_Str");
  _node3=new ServerDispatcher(new HowlLogger(_node3Log),Listener.NULL_LISTENER);
  _tport3=new TransportImpl(new FailureDetectorImpl(5000,FailureDetectorImpl.OPEN_PIN));
  _node3.init(_tport3);
  _node3.getAcceptorLearner().setRecoveryGracePeriod(5000);
  FDUtil.ensureFD(_tport3.getFD());
  System.err.println("String_Node_Str");
  ByteBuffer myBuffer=ByteBuffer.allocate(4);
  myBuffer.putInt(67);
  Proposal myProp=new Proposal("String_Node_Str",myBuffer.array());
  myClient.send(new Envelope(myProp),_tport2.getLocalAddress());
  VoteOutcome myOutcome=myClient.getNext(10000);
  System.err.println("String_Node_Str");
  Thread.sleep(15000);
  Assert.assertTrue(_node2.getAcceptorLearner().getLowWatermark().getSeqNum() != _node3.getAcceptorLearner().getLowWatermark().getSeqNum());
  Assert.assertFalse(_node3.getCore().getCommon().getNodeState().test(NodeState.State.RECOVERING));
  Thread.sleep(5000);
  System.err.println("String_Node_Str");
  myTransport.terminate();
}