Program: 88407
Project: 88407
Buggy source:
/** 
 * {@inheritDoc}
 */
@Override public Plan getPlan(String... args){
  if (args.length != 4) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  int noSubTasks=Integer.parseInt(args[0]);
  String dataPointInput=args[1];
  String clusterInput=args[2];
  String output=args[3];
  DataSourceContract<PactInteger,CoordVector> dataPoints=new DataSourceContract<PactInteger,CoordVector>(PointInFormat.class,dataPointInput,"String_Node_Str");
  dataPoints.setFormatParameter("String_Node_Str","String_Node_Str");
  dataPoints.setDegreeOfParallelism(noSubTasks);
  dataPoints.setOutputContract(UniqueKey.class);
  DataSourceContract<PactInteger,CoordVector> clusterPoints=new DataSourceContract<PactInteger,CoordVector>(PointInFormat.class,clusterInput,"String_Node_Str");
  clusterPoints.setFormatParameter("String_Node_Str","String_Node_Str");
  clusterPoints.setDegreeOfParallelism(1);
  clusterPoints.setOutputContract(UniqueKey.class);
  CrossContract<PactInteger,CoordVector,PactInteger,CoordVector,PactInteger,Distance> computeDistance=new CrossContract<PactInteger,CoordVector,PactInteger,CoordVector,PactInteger,Distance>(ComputeDistance.class,"String_Node_Str");
  computeDistance.setDegreeOfParallelism(noSubTasks);
  computeDistance.getCompilerHints().setAvgBytesPerRecord(48);
  ReduceContract<PactInteger,Distance,PactInteger,CoordVectorCountSum> findNearestClusterCenters=new ReduceContract<PactInteger,Distance,PactInteger,CoordVectorCountSum>(FindNearestCenter.class,"String_Node_Str");
  findNearestClusterCenters.setDegreeOfParallelism(noSubTasks);
  findNearestClusterCenters.getCompilerHints().setAvgBytesPerRecord(48);
  ReduceContract<PactInteger,CoordVectorCountSum,PactInteger,CoordVector> recomputeClusterCenter=new ReduceContract<PactInteger,CoordVectorCountSum,PactInteger,CoordVector>(RecomputeClusterCenter.class,"String_Node_Str");
  recomputeClusterCenter.setDegreeOfParallelism(noSubTasks);
  recomputeClusterCenter.getCompilerHints().setAvgBytesPerRecord(36);
  DataSinkContract<PactInteger,CoordVector> newClusterPoints=new DataSinkContract<PactInteger,CoordVector>(PointOutFormat.class,output,"String_Node_Str");
  newClusterPoints.setDegreeOfParallelism(noSubTasks);
  newClusterPoints.setInput(recomputeClusterCenter);
  recomputeClusterCenter.setInput(findNearestClusterCenters);
  findNearestClusterCenters.setInput(computeDistance);
  computeDistance.setFirstInput(dataPoints);
  computeDistance.setSecondInput(clusterPoints);
  return new Plan(newClusterPoints,"String_Node_Str");
}

Fixed version (ground truth):
/** 
 * {@inheritDoc}
 */
@Override public Plan getPlan(String... args){
  int noSubTasks=(args.length > 0 ? Integer.parseInt(args[0]) : 1);
  String dataPointInput=(args.length > 1 ? args[1] : "String_Node_Str");
  String clusterInput=(args.length > 2 ? args[2] : "String_Node_Str");
  String output=(args.length > 3 ? args[3] : "String_Node_Str");
  DataSourceContract<PactInteger,CoordVector> dataPoints=new DataSourceContract<PactInteger,CoordVector>(PointInFormat.class,dataPointInput,"String_Node_Str");
  dataPoints.setFormatParameter("String_Node_Str","String_Node_Str");
  dataPoints.setDegreeOfParallelism(noSubTasks);
  dataPoints.setOutputContract(UniqueKey.class);
  DataSourceContract<PactInteger,CoordVector> clusterPoints=new DataSourceContract<PactInteger,CoordVector>(PointInFormat.class,clusterInput,"String_Node_Str");
  clusterPoints.setFormatParameter("String_Node_Str","String_Node_Str");
  clusterPoints.setDegreeOfParallelism(1);
  clusterPoints.setOutputContract(UniqueKey.class);
  CrossContract<PactInteger,CoordVector,PactInteger,CoordVector,PactInteger,Distance> computeDistance=new CrossContract<PactInteger,CoordVector,PactInteger,CoordVector,PactInteger,Distance>(ComputeDistance.class,"String_Node_Str");
  computeDistance.setDegreeOfParallelism(noSubTasks);
  computeDistance.getCompilerHints().setAvgBytesPerRecord(48);
  ReduceContract<PactInteger,Distance,PactInteger,CoordVectorCountSum> findNearestClusterCenters=new ReduceContract<PactInteger,Distance,PactInteger,CoordVectorCountSum>(FindNearestCenter.class,"String_Node_Str");
  findNearestClusterCenters.setDegreeOfParallelism(noSubTasks);
  findNearestClusterCenters.getCompilerHints().setAvgBytesPerRecord(48);
  ReduceContract<PactInteger,CoordVectorCountSum,PactInteger,CoordVector> recomputeClusterCenter=new ReduceContract<PactInteger,CoordVectorCountSum,PactInteger,CoordVector>(RecomputeClusterCenter.class,"String_Node_Str");
  recomputeClusterCenter.setDegreeOfParallelism(noSubTasks);
  recomputeClusterCenter.getCompilerHints().setAvgBytesPerRecord(36);
  DataSinkContract<PactInteger,CoordVector> newClusterPoints=new DataSinkContract<PactInteger,CoordVector>(PointOutFormat.class,output,"String_Node_Str");
  newClusterPoints.setDegreeOfParallelism(noSubTasks);
  newClusterPoints.setInput(recomputeClusterCenter);
  recomputeClusterCenter.setInput(findNearestClusterCenters);
  findNearestClusterCenters.setInput(computeDistance);
  computeDistance.setFirstInput(dataPoints);
  computeDistance.setSecondInput(clusterPoints);
  return new Plan(newClusterPoints,"String_Node_Str");
}