Program: 40744
Project: 40744
Buggy source:
@SuppressWarnings("String_Node_Str") protected void cleanup(Context context) throws IOException, InterruptedException {
  LOG.info("String_Node_Str",inputSplitData.size(),inputSplitData.get(0).size());
  Vector[] vecArray=new Vector[inputSplitData.size()];
  Iterator<Vector> iterator=inputSplitData.iterator();
  int row=0;
  while (iterator.hasNext()) {
    vecArray[row]=iterator.next();
    row++;
  }
  AdmmMapperContext mapperContext;
  if (iteration == 0) {
    mapperContext=new AdmmMapperContext(splitId,vecArray,rho);
  }
 else {
    mapperContext=assembleMapperContextFromCache(vecArray,splitId);
  }
  AdmmReducerContext reducerContext=localMapperOptimization(mapperContext);
  LOG.info("String_Node_Str" + iteration + "String_Node_Str"+ splitId);
  context.write(NullWritable.get(),new AdmmReducerContextWritable(reducerContext));
  Configuration conf=context.getConfiguration();
  RecordWriter<NullWritable,DoubleArrayWritable> writer=null;
  try {
    conf.setClass("String_Node_Str",DoubleArrayWritable.class,Writable.class);
    conf.set("String_Node_Str","String_Node_Str" + this.splitId);
    writer=(RecordWriter<NullWritable,DoubleArrayWritable>)context.getOutputFormatClass().newInstance().getRecordWriter(context);
    writer.write(NullWritable.get(),new DoubleArrayWritable(reducerContext.getXUpdated()));
    writer.close(context);
    conf.set("String_Node_Str","String_Node_Str" + this.splitId);
    writer=(RecordWriter<NullWritable,DoubleArrayWritable>)context.getOutputFormatClass().newInstance().getRecordWriter(context);
    writer.write(NullWritable.get(),new DoubleArrayWritable(reducerContext.getUInitial()));
    writer.close(context);
  }
 catch (  Exception e) {
    LOG.error(e.getMessage());
    throw new IOException(e.getMessage());
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") protected void cleanup(Context context) throws IOException, InterruptedException {
  if (inputSplitData.size() <= 0) {
    return;
  }
  LOG.info("String_Node_Str",inputSplitData.size(),inputSplitData.get(0).size());
  Vector[] vecArray=new Vector[inputSplitData.size()];
  Iterator<Vector> iterator=inputSplitData.iterator();
  int row=0;
  while (iterator.hasNext()) {
    vecArray[row]=iterator.next();
    row++;
  }
  AdmmMapperContext mapperContext;
  if (iteration == 0) {
    mapperContext=new AdmmMapperContext(splitId,vecArray,rho);
  }
 else {
    mapperContext=assembleMapperContextFromCache(vecArray,splitId);
  }
  AdmmReducerContext reducerContext=localMapperOptimization(mapperContext);
  LOG.info("String_Node_Str" + iteration + "String_Node_Str"+ splitId);
  context.write(NullWritable.get(),new AdmmReducerContextWritable(reducerContext));
  Configuration conf=context.getConfiguration();
  RecordWriter<NullWritable,DoubleArrayWritable> writer=null;
  try {
    conf.setClass("String_Node_Str",DoubleArrayWritable.class,Writable.class);
    conf.set("String_Node_Str","String_Node_Str" + this.splitId);
    writer=(RecordWriter<NullWritable,DoubleArrayWritable>)context.getOutputFormatClass().newInstance().getRecordWriter(context);
    writer.write(NullWritable.get(),new DoubleArrayWritable(reducerContext.getXUpdated()));
    writer.close(context);
    conf.set("String_Node_Str","String_Node_Str" + this.splitId);
    writer=(RecordWriter<NullWritable,DoubleArrayWritable>)context.getOutputFormatClass().newInstance().getRecordWriter(context);
    writer.write(NullWritable.get(),new DoubleArrayWritable(reducerContext.getUInitial()));
    writer.close(context);
  }
 catch (  Exception e) {
    LOG.error(e.getMessage());
    throw new IOException(e.getMessage());
  }
}