Program: 89723
Project: 89723
Buggy source:
/** 
 * Initialise the status on a fresh batch request. Apart from the given values, a file is created to store batch results in. <b>Sideeffect</b>: BatchTimeout is started here
 * @param originalRequestID      The ID of the originating request.
 * @param originalRequestReplyTo The reply channel for the originatingrequest.
 * @param bitarchiveBatchID      The ID of the job sent to bitarchives.
 * @param missingRespondents     List of all live bitarchives, used toknow which bitarchives to await reply from.
 * @param timeout                Timeout for Batch job
 * @throws IOFailure if a file for batch results cannot be made.
 */
private BatchJobStatus(String originalRequestID,ChannelID originalRequestReplyTo,String bitarchiveBatchID,Set<String> missingRespondents,long timeout) throws IOFailure {
  this.originalRequestID=originalRequestID;
  this.originalRequestReplyTo=originalRequestReplyTo;
  this.bitarchiveBatchID=bitarchiveBatchID;
  this.missingRespondents=missingRespondents;
  batchTimeoutTask=new BatchTimeoutTask(bitarchiveBatchID);
  batchTimeout=timeout;
  Timer timer=new Timer(true);
  timer.schedule(batchTimeoutTask,batchTimeout);
  this.noOfFilesProcessed=0;
  try {
    this.batchResultFile=File.createTempFile(bitarchiveBatchID,"String_Node_Str",FileUtils.getTempDir());
  }
 catch (  IOException e) {
    final String errMsg="String_Node_Str";
    log.warn(errMsg);
    throw new IOFailure(errMsg,e);
  }
  this.filesFailed=new ArrayList<File>();
  this.errorMessages=null;
  this.notifyInitiated=false;
  exceptions=new ArrayList<FileBatchJob.ExceptionOccurrence>();
}

Fixed version (ground truth):
/** 
 * Initialise the status on a fresh batch request. Apart from the given values, a file is created to store batch results in. <b>Sideeffect</b>: BatchTimeout is started here
 * @param originalRequestID      The ID of the originating request.
 * @param originalRequestReplyTo The reply channel for the originatingrequest.
 * @param bitarchiveBatchID      The ID of the job sent to bitarchives.
 * @param missingRespondents     List of all live bitarchives, used toknow which bitarchives to await reply from.
 * @param timeout                Timeout for Batch job
 * @throws IOFailure if a file for batch results cannot be made.
 */
private BatchJobStatus(String originalRequestID,ChannelID originalRequestReplyTo,String bitarchiveBatchID,Set<String> missingRespondents,long timeout) throws IOFailure {
  this.originalRequestID=originalRequestID;
  this.originalRequestReplyTo=originalRequestReplyTo;
  this.bitarchiveBatchID=bitarchiveBatchID;
  this.missingRespondents=missingRespondents;
  batchTimeoutTask=new BatchTimeoutTask(bitarchiveBatchID);
  batchTimeout=timeout;
  batchTimer.schedule(batchTimeoutTask,batchTimeout);
  this.noOfFilesProcessed=0;
  try {
    this.batchResultFile=File.createTempFile(bitarchiveBatchID,"String_Node_Str",FileUtils.getTempDir());
  }
 catch (  IOException e) {
    final String errMsg="String_Node_Str";
    log.warn(errMsg);
    throw new IOFailure(errMsg,e);
  }
  this.filesFailed=new ArrayList<File>();
  this.errorMessages=null;
  this.notifyInitiated=false;
  exceptions=new ArrayList<FileBatchJob.ExceptionOccurrence>();
}