Program: 87202
Project: 87202
Buggy source:
/** 
 * Apply defaults for unset layer values.
 * @param layer
 */
private void prepLayer(LayerSpecT layer){
  if (!PlowUtils.isValid(layer.getServ())) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_SERVICE);
    layer.setServ(Defaults.DEFAULT_SERVICE);
  }
  ServiceFull service=serviceDao.getServiceFull(layer.getServ());
  if (service != null) {
    if (service.isSetMinCores() && !layer.isSetMinCores()) {
      layer.setMinCores(service.getMinCores());
    }
    if (service.isSetMaxCores() && !layer.isSetMaxCores()) {
      layer.setMaxCores(service.getMaxCores());
    }
    if (service.isSetMaxRam() && !layer.isSetMaxRam()) {
      layer.setMaxRam(service.getMaxRam());
    }
    if (service.isSetMinRam() && !layer.isSetMinRam()) {
      layer.setMinRam(service.getMinRam());
    }
    if (service.isSetMaxRetries() && !layer.isSetMaxRetries()) {
      layer.setMaxRetries(service.getMaxRetries());
    }
    if (service.isSetTags() && !layer.isSetTags()) {
      layer.setTags(layer.getTags());
    }
    if (service.isSetThreadable() && !layer.isSetThreadable()) {
      layer.setThreadable(layer.isThreadable());
    }
  }
  if (!layer.isSetMaxCores()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MAX_CORES);
    layer.setMaxCores(Defaults.DEFAULT_MAX_CORES);
  }
  if (!layer.isSetMinCores()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MIN_CORES);
    layer.setMinCores(Defaults.DEFAULT_MIN_CORES);
  }
  if (!layer.isSetMinRam()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MIN_RAM);
    layer.setMinRam(Defaults.DEFAULT_MIN_RAM);
  }
  if (!layer.isSetMaxRam()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MAX_RAM);
    layer.setMaxRam(Defaults.DEFAULT_MAX_RAM);
  }
  if (!layer.isSetMaxRetries()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MAX_RETRIES);
    layer.setMaxRetries(Defaults.DEFAULT_MAX_RETRIES);
  }
  if (!layer.isSetThreadable()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_THREADABLE);
    layer.setThreadable(Defaults.DEFAULT_THREADABLE);
  }
  if (!layer.isSetTags()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_TAGS);
    layer.setTags(Defaults.DEFAULT_TAGS);
  }
}

Fixed version (ground truth):
/** 
 * Apply defaults for unset layer values.
 * @param layer
 */
private void prepLayer(LayerSpecT layer){
  if (!PlowUtils.isValid(layer.getServ())) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_SERVICE);
    layer.setServ(Defaults.DEFAULT_SERVICE);
  }
  ServiceFull service=serviceDao.getServiceFull(layer.getServ());
  if (service != null) {
    if (service.isSetMinCores() && !layer.isSetMinCores()) {
      layer.setMinCores(service.getMinCores());
    }
    if (service.isSetMaxCores() && !layer.isSetMaxCores()) {
      layer.setMaxCores(service.getMaxCores());
    }
    if (service.isSetMaxRam() && !layer.isSetMaxRam()) {
      layer.setMaxRam(service.getMaxRam());
    }
    if (service.isSetMinRam() && !layer.isSetMinRam()) {
      layer.setMinRam(service.getMinRam());
    }
    if (service.isSetMaxRetries() && !layer.isSetMaxRetries()) {
      layer.setMaxRetries(service.getMaxRetries());
    }
    if (service.isSetTags() && !layer.isSetTags()) {
      layer.setTags(service.getTags());
    }
    if (service.isSetThreadable() && !layer.isSetThreadable()) {
      layer.setThreadable(service.isThreadable());
    }
  }
  if (!layer.isSetMaxCores()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MAX_CORES);
    layer.setMaxCores(Defaults.DEFAULT_MAX_CORES);
  }
  if (!layer.isSetMinCores()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MIN_CORES);
    layer.setMinCores(Defaults.DEFAULT_MIN_CORES);
  }
  if (!layer.isSetMinRam()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MIN_RAM);
    layer.setMinRam(Defaults.DEFAULT_MIN_RAM);
  }
  if (!layer.isSetMaxRam()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MAX_RAM);
    layer.setMaxRam(Defaults.DEFAULT_MAX_RAM);
  }
  if (!layer.isSetMaxRetries()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_MAX_RETRIES);
    layer.setMaxRetries(Defaults.DEFAULT_MAX_RETRIES);
  }
  if (!layer.isSetThreadable()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_THREADABLE);
    layer.setThreadable(Defaults.DEFAULT_THREADABLE);
  }
  if (!layer.isSetTags()) {
    logger.info("String_Node_Str",layer.name,Defaults.DEFAULT_TAGS);
    layer.setTags(Defaults.DEFAULT_TAGS);
  }
}