Program: 55889
Project: 55889
Buggy source:
/** 
 * {@inheritDoc}
 */
@Override public void allocatedResourceDied(final JobID jobID,final AllocatedResource allocatedResource){
  LOG.info("String_Node_Str" + allocatedResource.getInstance().getName() + "String_Node_Str"+ jobID+ "String_Node_Str");
  ExecutionGraph job=this.jobQueue.getFirst();
  Iterator<ExecutionGraph> iterator=this.jobQueue.descendingIterator();
  while (job.getJobID() != jobID) {
    if (iterator.hasNext()) {
      job=iterator.next();
    }
 else {
      LOG.error("String_Node_Str" + jobID + "String_Node_Str");
      return;
    }
  }
  List<ExecutionVertex> vertices=job.getVerticesAssignedToResource(allocatedResource);
  Iterator<ExecutionVertex> vertexIter=vertices.iterator();
  while (vertexIter.hasNext()) {
    ExecutionVertex vertex=vertexIter.next();
    vertex.getEnvironment().changeExecutionState(ExecutionState.FAILED,"String_Node_Str" + allocatedResource.getInstance().getName() + "String_Node_Str"+ vertex.getEnvironment().getTaskName()+ "String_Node_Str");
    if (vertex.getExecutionState() == ExecutionState.FAILED) {
      job.executionStateChanged(vertex.getEnvironment(),ExecutionState.FAILED,"String_Node_Str" + allocatedResource.getInstance().getName() + "String_Node_Str"+ vertex.getEnvironment().getTaskName()+ "String_Node_Str");
      return;
    }
    vertex.setAllocatedResource(new AllocatedResource(DummyInstance.createDummyInstance(allocatedResource.getInstanceType()),allocatedResource.getInstanceType(),null));
    vertex.getEnvironment().changeExecutionState(ExecutionState.ASSIGNING,null);
  }
  try {
    LOG.info("String_Node_Str" + allocatedResource.getInstanceType().getIdentifier());
    this.instanceManager.requestInstance(jobID,job.getJobConfiguration(),allocatedResource.getInstanceType());
  }
 catch (  InstanceException e) {
    e.printStackTrace();
  }
  job.executionStateChanged(vertices.get(0).getEnvironment(),ExecutionState.RECOVERING,null);
}

Fixed version (ground truth):
/** 
 * {@inheritDoc}
 */
@Override public void allocatedResourceDied(final JobID jobID,final AllocatedResource allocatedResource){
  LOG.info("String_Node_Str" + allocatedResource.getInstance().getName() + "String_Node_Str"+ jobID+ "String_Node_Str");
  ExecutionGraph job=this.jobQueue.getFirst();
  Iterator<ExecutionGraph> iterator=this.jobQueue.descendingIterator();
  while (job.getJobID() != jobID) {
    if (iterator.hasNext()) {
      job=iterator.next();
    }
 else {
      LOG.error("String_Node_Str" + jobID + "String_Node_Str");
      return;
    }
  }
  List<ExecutionVertex> vertices=job.getVerticesAssignedToResource(allocatedResource);
  Iterator<ExecutionVertex> vertexIter=vertices.iterator();
  while (vertexIter.hasNext()) {
    ExecutionVertex vertex=vertexIter.next();
    vertex.getEnvironment().changeExecutionState(ExecutionState.FAILED,"String_Node_Str" + allocatedResource.getInstance().getName() + "String_Node_Str"+ vertex.getEnvironment().getTaskName()+ "String_Node_Str");
    if (vertex.getExecutionState() == ExecutionState.FAILED) {
      job.executionStateChanged(vertex.getEnvironment(),ExecutionState.FAILED,"String_Node_Str" + allocatedResource.getInstance().getName() + "String_Node_Str"+ vertex.getEnvironment().getTaskName()+ "String_Node_Str");
      return;
    }
    vertex.setAllocatedResource(new AllocatedResource(DummyInstance.createDummyInstance(allocatedResource.getInstanceType()),allocatedResource.getInstanceType(),null));
    vertex.getEnvironment().changeExecutionState(ExecutionState.ASSIGNING,null);
  }
  try {
    LOG.info("String_Node_Str" + allocatedResource.getInstanceType().getIdentifier());
    Map<InstanceType,Integer> instanceMap=new HashMap<InstanceType,Integer>();
    instanceMap.put(allocatedResource.getInstanceType(),1);
    this.getInstanceManager().requestInstance(jobID,job.getJobConfiguration(),instanceMap,null);
  }
 catch (  InstanceException e) {
    e.printStackTrace();
  }
  job.executionStateChanged(vertices.get(0).getEnvironment(),ExecutionState.RECOVERING,null);
}