Program: 87262
Project: 87262
Buggy source:
public PaxosMessage process(PaxosMessage aMessage){
  long myCurrentTime=System.currentTimeMillis();
  long mySeqNum=aMessage.getSeqNum();
  _logger.info("String_Node_Str" + mySeqNum + "String_Node_Str"+ aMessage);
switch (aMessage.getType()) {
case Operations.COLLECT:
{
      Collect myCollect=(Collect)aMessage;
      if (!amAccepting(myCollect,myCurrentTime)) {
        _ignoredCollects.incrementAndGet();
        _logger.info("String_Node_Str" + myCollect + "String_Node_Str"+ getIgnoredCollectsCount());
        return null;
      }
      Collect myOld=supercedes(myCollect);
      if (myOld != null) {
        updateLastActionTime(myCurrentTime);
        return new Last(mySeqNum,getLowWatermark(),getHighWatermark(),myOld.getRndNumber(),getStorage().get(mySeqNum));
      }
 else {
        Collect myLastCollect=getLastCollect();
        return new OldRound(mySeqNum,myLastCollect.getNodeId(),myLastCollect.getRndNumber());
      }
    }
case Operations.BEGIN:
{
    Begin myBegin=(Begin)aMessage;
    if (originates(myBegin)) {
      updateLastActionTime(myCurrentTime);
      updateHighWatermark(myBegin.getSeqNum());
      return new Accept(mySeqNum,getLastCollect().getRndNumber());
    }
 else     if (precedes(myBegin)) {
      Collect myLastCollect=getLastCollect();
      return new OldRound(mySeqNum,myLastCollect.getNodeId(),myLastCollect.getRndNumber());
    }
 else {
      _logger.info("String_Node_Str" + mySeqNum + "String_Node_Str"+ myBegin.getRndNumber()+ "String_Node_Str");
    }
  }
case Operations.SUCCESS:
{
  Success mySuccess=(Success)aMessage;
  _logger.info("String_Node_Str" + mySuccess.getSeqNum());
  getStorage().put(mySeqNum,mySuccess.getValue());
  updateLastActionTime(myCurrentTime);
  updateLowWatermark(mySuccess.getSeqNum());
  updateHighWatermark(mySuccess.getSeqNum());
  signal(new Completion(Reasons.OK,mySuccess.getSeqNum(),mySuccess.getValue()));
  return new Ack(mySuccess.getSeqNum());
}
default :
throw new RuntimeException("String_Node_Str");
}
}

Fixed version (ground truth):
public PaxosMessage process(PaxosMessage aMessage){
  long myCurrentTime=System.currentTimeMillis();
  long mySeqNum=aMessage.getSeqNum();
  _logger.info("String_Node_Str" + mySeqNum + "String_Node_Str"+ aMessage);
switch (aMessage.getType()) {
case Operations.COLLECT:
{
      Collect myCollect=(Collect)aMessage;
      if (!amAccepting(myCollect,myCurrentTime)) {
        _ignoredCollects.incrementAndGet();
        _logger.info("String_Node_Str" + myCollect + "String_Node_Str"+ getIgnoredCollectsCount());
        return null;
      }
      Collect myOld=supercedes(myCollect);
      if (myOld != null) {
        updateLastActionTime(myCurrentTime);
        return new Last(mySeqNum,getLowWatermark(),getHighWatermark(),myOld.getRndNumber(),getStorage().get(mySeqNum));
      }
 else {
        Collect myLastCollect=getLastCollect();
        return new OldRound(mySeqNum,myLastCollect.getNodeId(),myLastCollect.getRndNumber());
      }
    }
case Operations.BEGIN:
{
    Begin myBegin=(Begin)aMessage;
    if (originates(myBegin)) {
      updateLastActionTime(myCurrentTime);
      updateHighWatermark(myBegin.getSeqNum());
      return new Accept(mySeqNum,getLastCollect().getRndNumber());
    }
 else     if (precedes(myBegin)) {
      Collect myLastCollect=getLastCollect();
      return new OldRound(mySeqNum,myLastCollect.getNodeId(),myLastCollect.getRndNumber());
    }
 else {
      _logger.info("String_Node_Str" + mySeqNum + "String_Node_Str"+ myBegin.getRndNumber()+ "String_Node_Str");
    }
  }
case Operations.SUCCESS:
{
  Success mySuccess=(Success)aMessage;
  _logger.info("String_Node_Str" + mySuccess.getSeqNum());
  updateLastActionTime(myCurrentTime);
  updateLowWatermark(mySuccess.getSeqNum());
  updateHighWatermark(mySuccess.getSeqNum());
  Completion myCompletion=new Completion(Reasons.OK,mySuccess.getSeqNum(),mySuccess.getValue());
  if (notHeartbeat(myCompletion.getValue())) {
    getStorage().put(mySeqNum,mySuccess.getValue());
    signal(myCompletion);
  }
 else {
    _receivedHeartbeats.incrementAndGet();
    _logger.info("String_Node_Str" + System.currentTimeMillis() + "String_Node_Str"+ getHeartbeatCount());
  }
  return new Ack(mySuccess.getSeqNum());
}
default :
throw new RuntimeException("String_Node_Str");
}
}