Program: 55258
Project: 55258
Buggy source:
/** 
 * Sets up an execution graph from a job graph.
 * @param jobGraph the job graph to create the execution graph from
 * @param instanceManager the instance manager
 * @throws GraphConversionException thrown if the job graph is not valid and no execution graph can be constructed from it
 */
private void constructExecutionGraph(final JobGraph jobGraph,final InstanceManager instanceManager) throws GraphConversionException {
  final HashMap<AbstractJobVertex,ExecutionVertex> temporaryVertexMap=new HashMap<AbstractJobVertex,ExecutionVertex>();
  final HashMap<AbstractJobVertex,ExecutionGroupVertex> temporaryGroupVertexMap=new HashMap<AbstractJobVertex,ExecutionGroupVertex>();
  final ExecutionStage initialExecutionStage=new ExecutionStage(this,0);
  this.stages.add(initialExecutionStage);
  final JobID jobID=jobGraph.getJobID();
  ClassLoader jobClassLoader=null;
  try {
    jobClassLoader=LibraryCacheManager.getClassLoader(jobID);
  }
 catch (  IOException e) {
    LOG.error(e);
    throw new GraphConversionException(StringUtils.stringifyException(e));
  }
  if (jobClassLoader == null) {
    throw new GraphConversionException("String_Node_Str" + jobID);
  }
  final AbstractJobVertex[] all=jobGraph.getAllJobVertices();
  for (int i=0; i < all.length; i++) {
    final ExecutionVertex createdVertex=createVertex(all[i],instanceManager,initialExecutionStage,jobGraph.getJobConfiguration(),jobClassLoader);
    temporaryVertexMap.put(all[i],createdVertex);
    temporaryGroupVertexMap.put(all[i],createdVertex.getGroupVertex());
  }
  createInitialGroupEdges(temporaryVertexMap);
  applyUserDefinedSettings(temporaryGroupVertexMap);
  calculateConnectionIDs();
  reconstructExecutionPipelines();
}

Fixed version (ground truth):
/** 
 * Sets up an execution graph from a job graph.
 * @param jobGraph the job graph to create the execution graph from
 * @param instanceManager the instance manager
 * @throws GraphConversionException thrown if the job graph is not valid and no execution graph can be constructed from it
 */
private void constructExecutionGraph(final JobGraph jobGraph,final InstanceManager instanceManager) throws GraphConversionException {
  final HashMap<AbstractJobVertex,ExecutionVertex> temporaryVertexMap=new HashMap<AbstractJobVertex,ExecutionVertex>();
  final HashMap<AbstractJobVertex,ExecutionGroupVertex> temporaryGroupVertexMap=new HashMap<AbstractJobVertex,ExecutionGroupVertex>();
  final ExecutionStage initialExecutionStage=new ExecutionStage(this,0);
  this.stages.add(initialExecutionStage);
  final JobID jobID=jobGraph.getJobID();
  ClassLoader jobClassLoader=null;
  try {
    jobClassLoader=LibraryCacheManager.getClassLoader(jobID);
  }
 catch (  IOException e) {
    LOG.error(e);
    throw new GraphConversionException(StringUtils.stringifyException(e));
  }
  if (jobClassLoader == null) {
    throw new GraphConversionException("String_Node_Str" + jobID);
  }
  final AbstractJobVertex[] all=jobGraph.getAllJobVertices();
  for (int i=0; i < all.length; i++) {
    final ExecutionVertex createdVertex=createVertex(all[i],instanceManager,initialExecutionStage,jobClassLoader);
    temporaryVertexMap.put(all[i],createdVertex);
    temporaryGroupVertexMap.put(all[i],createdVertex.getGroupVertex());
  }
  createInitialGroupEdges(temporaryVertexMap);
  applyUserDefinedSettings(temporaryGroupVertexMap);
  calculateConnectionIDs();
  reconstructExecutionPipelines();
}