Program: 90836
Project: 90836
Buggy source:
/** 
 * Create a Flume Avro Appender.
 * @param agents An array of Agents.
 * @param delay The amount of time in milliseconds to wait between retries.
 * @param agentRetries The number of times to retry an agent before failing to the next agent.
 * @param name The name of the Appender.
 * @param suppress If true exceptions will be handled in the appender.
 * @param excludes A comma separated list of MDC elements to exclude.
 * @param includes A comma separated list of MDC elements to include.
 * @param required A comma separated list of MDC elements that are required.
 * @param mdcPrefix The prefix to add to MDC key names.
 * @param eventPrefix The prefix to add to event key names.
 * @param compressBody If true the event body will be compressed.
 * @param batchSize Number of events to include in a batch. Defaults to 1.
 * @param factory The factory to use to create Flume events.
 * @param layout The layout to format the event.
 * @param filter A Filter to filter events.
 * @return A Flume Avro Appender.
 */
@PluginFactory public static FlumeAvroAppender createAppender(@PluginElement("String_Node_Str") Agent[] agents,@PluginAttr("String_Node_Str") String delay,@PluginAttr("String_Node_Str") String agentRetries,@PluginAttr("String_Node_Str") String name,@PluginAttr("String_Node_Str") String suppress,@PluginAttr("String_Node_Str") String excludes,@PluginAttr("String_Node_Str") String includes,@PluginAttr("String_Node_Str") String required,@PluginAttr("String_Node_Str") String mdcPrefix,@PluginAttr("String_Node_Str") String eventPrefix,@PluginAttr("String_Node_Str") String compressBody,@PluginAttr("String_Node_Str") String batchSize,@PluginElement("String_Node_Str") FlumeEventFactory factory,@PluginElement("String_Node_Str") Layout layout,@PluginElement("String_Node_Str") Filter filter){
  String hostname;
  try {
    hostname=InetAddress.getLocalHost().getHostName();
  }
 catch (  Exception ex) {
    LOGGER.error("String_Node_Str",ex);
    return null;
  }
  if (agents == null || agents.length == 0) {
    LOGGER.debug("String_Node_Str");
    agents=new Agent[]{Agent.createAgent(null,null)};
  }
  boolean handleExceptions=suppress == null ? true : Boolean.valueOf(suppress);
  boolean compress=compressBody == null ? true : Boolean.valueOf(compressBody);
  int batchCount=batchSize == null ? 1 : Integer.parseInt(batchSize);
  int reconnectDelay=delay == null ? 0 : Integer.parseInt(delay);
  int retries=agentRetries == null ? 0 : Integer.parseInt(agentRetries);
  if (layout == null) {
    layout=RFC5424Layout.createLayout(null,null,null,"String_Node_Str",null,null,null,null,excludes,includes,required,null,null);
  }
  if (name == null) {
    LOGGER.error("String_Node_Str");
    return null;
  }
  FlumeAvroManager manager=FlumeAvroManager.getManager(agents,batchCount);
  if (manager == null) {
    return null;
  }
  return new FlumeAvroAppender(name,filter,layout,handleExceptions,hostname,includes,excludes,required,mdcPrefix,eventPrefix,compress,reconnectDelay,retries,factory,manager);
}

Fixed version (ground truth):
/** 
 * Create a Flume Avro Appender.
 * @param agents An array of Agents.
 * @param delay The amount of time in milliseconds to wait between retries.
 * @param agentRetries The number of times to retry an agent before failing to the next agent.
 * @param name The name of the Appender.
 * @param suppress If true exceptions will be handled in the appender.
 * @param excludes A comma separated list of MDC elements to exclude.
 * @param includes A comma separated list of MDC elements to include.
 * @param required A comma separated list of MDC elements that are required.
 * @param mdcPrefix The prefix to add to MDC key names.
 * @param eventPrefix The prefix to add to event key names.
 * @param compressBody If true the event body will be compressed.
 * @param batchSize Number of events to include in a batch. Defaults to 1.
 * @param factory The factory to use to create Flume events.
 * @param layout The layout to format the event.
 * @param filter A Filter to filter events.
 * @return A Flume Avro Appender.
 */
@PluginFactory public static FlumeAvroAppender createAppender(@PluginElement("String_Node_Str") Agent[] agents,@PluginAttr("String_Node_Str") String delay,@PluginAttr("String_Node_Str") String agentRetries,@PluginAttr("String_Node_Str") String name,@PluginAttr("String_Node_Str") String suppress,@PluginAttr("String_Node_Str") String excludes,@PluginAttr("String_Node_Str") String includes,@PluginAttr("String_Node_Str") String required,@PluginAttr("String_Node_Str") String mdcPrefix,@PluginAttr("String_Node_Str") String eventPrefix,@PluginAttr("String_Node_Str") String compressBody,@PluginAttr("String_Node_Str") String batchSize,@PluginElement("String_Node_Str") FlumeEventFactory factory,@PluginElement("String_Node_Str") Layout layout,@PluginElement("String_Node_Str") Filter filter){
  String hostname;
  try {
    hostname=getHostName();
  }
 catch (  Exception ex) {
    LOGGER.error("String_Node_Str",ex);
    return null;
  }
  if (agents == null || agents.length == 0) {
    LOGGER.debug("String_Node_Str");
    agents=new Agent[]{Agent.createAgent(null,null)};
  }
  boolean handleExceptions=suppress == null ? true : Boolean.valueOf(suppress);
  boolean compress=compressBody == null ? true : Boolean.valueOf(compressBody);
  int batchCount=batchSize == null ? 1 : Integer.parseInt(batchSize);
  int reconnectDelay=delay == null ? 0 : Integer.parseInt(delay);
  int retries=agentRetries == null ? 0 : Integer.parseInt(agentRetries);
  if (layout == null) {
    layout=RFC5424Layout.createLayout(null,null,null,"String_Node_Str",null,null,null,null,excludes,includes,required,null,null);
  }
  if (name == null) {
    LOGGER.error("String_Node_Str");
    return null;
  }
  FlumeAvroManager manager=FlumeAvroManager.getManager(agents,batchCount);
  if (manager == null) {
    return null;
  }
  return new FlumeAvroAppender(name,filter,layout,handleExceptions,hostname,includes,excludes,required,mdcPrefix,eventPrefix,compress,reconnectDelay,retries,factory,manager);
}