Program: 5343
Project: 5343
Buggy source:
@Override public InternalScanner preCompactScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c,Store store,List<? extends KeyValueScanner> scanners,ScanType scanType,long earliestPutTs,InternalScanner s,CompactionRequest request) throws IOException {
  TopicMetadataCache metadataCache=getTopicMetadataCache(c.getEnvironment());
  LOG.info("String_Node_Str");
  TransactionVisibilityState txVisibilityState=txStateCache.getLatestState();
  if (pruneEnable == null) {
    CConfiguration cConf=metadataCache.getCConfiguration();
    if (cConf != null) {
      pruneEnable=cConf.getBoolean(TxConstants.TransactionPruning.PRUNE_ENABLE,TxConstants.TransactionPruning.DEFAULT_PRUNE_ENABLE);
      if (Boolean.TRUE.equals(pruneEnable)) {
        String pruneTable=cConf.get(TxConstants.TransactionPruning.PRUNE_STATE_TABLE,TxConstants.TransactionPruning.DEFAULT_PRUNE_STATE_TABLE);
        long pruneFlushInterval=TimeUnit.SECONDS.toMillis(cConf.getLong(TxConstants.TransactionPruning.PRUNE_FLUSH_INTERVAL,TxConstants.TransactionPruning.DEFAULT_PRUNE_FLUSH_INTERVAL));
        compactionState=new CompactionState(c.getEnvironment(),TableName.valueOf(pruneTable),pruneFlushInterval);
        LOG.debug("String_Node_Str" + pruneTable);
      }
    }
  }
  if (Boolean.TRUE.equals(pruneEnable)) {
    compactionState.record(request,txVisibilityState);
  }
  Scan scan=new Scan();
  scan.setFilter(new MessageDataFilter(c.getEnvironment(),System.currentTimeMillis(),prefixLength,metadataCache,txVisibilityState));
  return new LoggingInternalScanner("String_Node_Str","String_Node_Str",new StoreScanner(store,store.getScanInfo(),scan,scanners,scanType,store.getSmallestReadPoint(),earliestPutTs),txVisibilityState);
}

Fixed version (ground truth):
@Override public InternalScanner preCompactScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c,Store store,List<? extends KeyValueScanner> scanners,ScanType scanType,long earliestPutTs,InternalScanner s,CompactionRequest request) throws IOException {
  LOG.info("String_Node_Str");
  TransactionVisibilityState txVisibilityState=txStateCache.getLatestState();
  if (pruneEnable == null) {
    CConfiguration cConf=topicMetadataCache.getCConfiguration();
    if (cConf != null) {
      pruneEnable=cConf.getBoolean(TxConstants.TransactionPruning.PRUNE_ENABLE,TxConstants.TransactionPruning.DEFAULT_PRUNE_ENABLE);
      if (Boolean.TRUE.equals(pruneEnable)) {
        String pruneTable=cConf.get(TxConstants.TransactionPruning.PRUNE_STATE_TABLE,TxConstants.TransactionPruning.DEFAULT_PRUNE_STATE_TABLE);
        long pruneFlushInterval=TimeUnit.SECONDS.toMillis(cConf.getLong(TxConstants.TransactionPruning.PRUNE_FLUSH_INTERVAL,TxConstants.TransactionPruning.DEFAULT_PRUNE_FLUSH_INTERVAL));
        compactionState=new CompactionState(c.getEnvironment(),TableName.valueOf(pruneTable),pruneFlushInterval);
        LOG.debug("String_Node_Str" + pruneTable);
      }
    }
  }
  if (Boolean.TRUE.equals(pruneEnable)) {
    compactionState.record(request,txVisibilityState);
  }
  Scan scan=new Scan();
  scan.setFilter(new MessageDataFilter(c.getEnvironment(),System.currentTimeMillis(),prefixLength,topicMetadataCache,txVisibilityState));
  return new LoggingInternalScanner("String_Node_Str","String_Node_Str",new StoreScanner(store,store.getScanInfo(),scan,scanners,scanType,store.getSmallestReadPoint(),earliestPutTs),txVisibilityState);
}