Program: 28935
Project: 28935
Buggy source:
public static void addTable(TableDefinition tableDefinition,ConcurrentMap<String,Table> tableMap,ExecutionPlanContext executionPlanContext){
  if (!tableMap.containsKey(tableDefinition.getId())) {
    MetaStreamEvent tableMetaStreamEvent=new MetaStreamEvent();
    tableMetaStreamEvent.addInputDefinition(tableDefinition);
    for (    Attribute attribute : tableDefinition.getAttributeList()) {
      tableMetaStreamEvent.addOutputData(attribute);
    }
    StreamEventPool tableStreamEventPool=new StreamEventPool(tableMetaStreamEvent,10);
    StreamEventCloner tableStreamEventCloner=new StreamEventCloner(tableMetaStreamEvent,tableStreamEventPool);
    Annotation annotation=AnnotationHelper.getAnnotation(SiddhiConstants.ANNOTATION_STORE,tableDefinition.getAnnotations());
    Table table;
    ConfigReader configReader=null;
    if (annotation != null) {
      final String evenTableType=annotation.getElement(SiddhiConstants.NAMESPACE_STORE);
      Extension extension=new Extension(){
        @Override public String getNamespace(){
          return SiddhiConstants.NAMESPACE_STORE;
        }
        @Override public String getName(){
          return evenTableType;
        }
      }
;
      table=(Table)SiddhiClassLoader.loadExtensionImplementation(extension,TableExtensionHolder.getInstance(executionPlanContext));
      configReader=executionPlanContext.getSiddhiContext().getConfigManager().generateConfigReader(extension.getNamespace(),extension.getName());
    }
 else {
      table=new InMemoryTable();
    }
    table.init(tableDefinition,tableStreamEventPool,tableStreamEventCloner,configReader,executionPlanContext);
    tableMap.putIfAbsent(tableDefinition.getId(),table);
  }
}

Fixed version (ground truth):
public static void addTable(TableDefinition tableDefinition,ConcurrentMap<String,Table> tableMap,ExecutionPlanContext executionPlanContext){
  if (!tableMap.containsKey(tableDefinition.getId())) {
    MetaStreamEvent tableMetaStreamEvent=new MetaStreamEvent();
    tableMetaStreamEvent.addInputDefinition(tableDefinition);
    for (    Attribute attribute : tableDefinition.getAttributeList()) {
      tableMetaStreamEvent.addOutputData(attribute);
    }
    StreamEventPool tableStreamEventPool=new StreamEventPool(tableMetaStreamEvent,10);
    StreamEventCloner tableStreamEventCloner=new StreamEventCloner(tableMetaStreamEvent,tableStreamEventPool);
    Annotation annotation=AnnotationHelper.getAnnotation(SiddhiConstants.ANNOTATION_STORE,tableDefinition.getAnnotations());
    Table table;
    ConfigReader configReader=null;
    if (annotation != null) {
      final String tableType=annotation.getElement(SiddhiConstants.ANNOTATION_ELEMENT_TYPE);
      Extension extension=new Extension(){
        @Override public String getNamespace(){
          return SiddhiConstants.NAMESPACE_STORE;
        }
        @Override public String getName(){
          return tableType;
        }
      }
;
      table=(Table)SiddhiClassLoader.loadExtensionImplementation(extension,TableExtensionHolder.getInstance(executionPlanContext));
      configReader=executionPlanContext.getSiddhiContext().getConfigManager().generateConfigReader(extension.getNamespace(),extension.getName());
    }
 else {
      table=new InMemoryTable();
    }
    table.init(tableDefinition,tableStreamEventPool,tableStreamEventCloner,configReader,executionPlanContext);
    tableMap.putIfAbsent(tableDefinition.getId(),table);
  }
}