Program: 5626
Project: 5626
Buggy source:
@Override public void configure(){
  ETLBatchConfig config=getConfig().convertOldConfig();
  setDescription(DEFAULT_DESCRIPTION);
  PipelineSpecGenerator<ETLBatchConfig,BatchPipelineSpec> specGenerator=new BatchPipelineSpecGenerator(getConfigurer(),ImmutableSet.of(BatchSource.PLUGIN_TYPE),ImmutableSet.of(BatchSink.PLUGIN_TYPE),TimePartitionedFileSet.class,FileSetProperties.builder().setInputFormat(AvroKeyInputFormat.class).setOutputFormat(AvroKeyOutputFormat.class).setEnableExploreOnCreate(true).setSerDe("String_Node_Str").setExploreInputFormat("String_Node_Str").setExploreOutputFormat("String_Node_Str").setTableProperty("String_Node_Str",Constants.ERROR_SCHEMA.toString()).build());
  BatchPipelineSpec spec=specGenerator.generateSpec(config);
  int sourceCount=0;
  for (  StageSpec stageSpec : spec.getStages()) {
    if (BatchSource.PLUGIN_TYPE.equals(stageSpec.getPlugin().getType())) {
      sourceCount++;
    }
  }
  if (sourceCount != 1) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  PipelinePlanner planner=new PipelinePlanner(SUPPORTED_PLUGIN_TYPES,ImmutableSet.<String>of(),ImmutableSet.<String>of());
  PipelinePlan plan=planner.plan(spec);
  if (plan.getPhases().size() != 1) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  PipelinePhase pipeline=plan.getPhases().values().iterator().next();
switch (config.getEngine()) {
case MAPREDUCE:
    BatchPhaseSpec batchPhaseSpec=new BatchPhaseSpec(ETLMapReduce.NAME,pipeline,config.getResources(),config.getDriverResources(),config.isStageLoggingEnabled(),new HashMap<String,String>(),config.getNumOfRecordsPreview());
  addMapReduce(new ETLMapReduce(batchPhaseSpec));
break;
case SPARK:
batchPhaseSpec=new BatchPhaseSpec(ETLSpark.class.getSimpleName(),pipeline,config.getResources(),config.getDriverResources(),config.isStageLoggingEnabled(),new HashMap<String,String>(),config.getNumOfRecordsPreview());
addSpark(new ETLSpark(batchPhaseSpec));
break;
default :
throw new IllegalArgumentException(String.format("String_Node_Str",config.getEngine(),Joiner.on(',').join(Engine.values())));
}
addWorkflow(new ETLWorkflow(spec,config.getEngine()));
scheduleWorkflow(Schedules.builder(SCHEDULE_NAME).setDescription("String_Node_Str").createTimeSchedule(config.getSchedule()),ETLWorkflow.NAME);
}

Fixed version (ground truth):
@Override public void configure(){
  ETLBatchConfig config=getConfig().convertOldConfig();
  setDescription(DEFAULT_DESCRIPTION);
  PipelineSpecGenerator<ETLBatchConfig,BatchPipelineSpec> specGenerator=new BatchPipelineSpecGenerator(getConfigurer(),ImmutableSet.of(BatchSource.PLUGIN_TYPE),ImmutableSet.of(BatchSink.PLUGIN_TYPE),TimePartitionedFileSet.class,FileSetProperties.builder().setInputFormat(AvroKeyInputFormat.class).setOutputFormat(AvroKeyOutputFormat.class).setEnableExploreOnCreate(true).setSerDe("String_Node_Str").setExploreInputFormat("String_Node_Str").setExploreOutputFormat("String_Node_Str").setTableProperty("String_Node_Str",Constants.ERROR_SCHEMA.toString()).build());
  BatchPipelineSpec spec=specGenerator.generateSpec(config);
  int sourceCount=0;
  for (  StageSpec stageSpec : spec.getStages()) {
    if (BatchSource.PLUGIN_TYPE.equals(stageSpec.getPlugin().getType())) {
      sourceCount++;
    }
  }
  if (sourceCount != 1) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  PipelinePlanner planner=new PipelinePlanner(SUPPORTED_PLUGIN_TYPES,ImmutableSet.<String>of(),ImmutableSet.<String>of());
  PipelinePlan plan=planner.plan(spec);
  if (plan.getPhases().size() != 1) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  PipelinePhase pipeline=plan.getPhases().values().iterator().next();
switch (config.getEngine()) {
case MAPREDUCE:
    BatchPhaseSpec batchPhaseSpec=new BatchPhaseSpec(ETLMapReduce.NAME,pipeline,config.getResources(),config.getDriverResources(),config.getClientResources(),config.isStageLoggingEnabled(),new HashMap<String,String>(),config.getNumOfRecordsPreview());
  addMapReduce(new ETLMapReduce(batchPhaseSpec));
break;
case SPARK:
batchPhaseSpec=new BatchPhaseSpec(ETLSpark.class.getSimpleName(),pipeline,config.getResources(),config.getDriverResources(),config.getClientResources(),config.isStageLoggingEnabled(),new HashMap<String,String>(),config.getNumOfRecordsPreview());
addSpark(new ETLSpark(batchPhaseSpec));
break;
default :
throw new IllegalArgumentException(String.format("String_Node_Str",config.getEngine(),Joiner.on(',').join(Engine.values())));
}
addWorkflow(new ETLWorkflow(spec,config.getEngine()));
scheduleWorkflow(Schedules.builder(SCHEDULE_NAME).setDescription("String_Node_Str").createTimeSchedule(config.getSchedule()),ETLWorkflow.NAME);
}