Program: 118292
Project: 118292
Buggy source:
protected static Set<String> getRelatedComponentNamesFromHelp(final String keyword){
  if (keyword == null || keyword.isEmpty()) {
    return null;
  }
  final List<SearchHit> querySearchResult=new ArrayList<SearchHit>();
  if (searchInHelpJob != null && searchInHelpJob.getState() != Job.NONE) {
    searchInHelpJob.cancel();
  }
  searchInHelpJob=new Job(SEARCHING_FROM_HELP){
    @SuppressWarnings("String_Node_Str") @Override protected IStatus run(    IProgressMonitor monitor){
      try {
        TalendPaletteSearchIndex searchIndex=TalendPaletteSearchIndex.getInstance();
        LocalSearchManager localSearchManager=BaseHelpSystem.getLocalSearchManager();
        localSearchManager.ensureIndexUpdated(monitor,searchIndex);
        ISearchQuery searchQuery=new SearchQuery(keyword,false,new ArrayList<String>(),Platform.getNL());
        searchIndex.search(searchQuery,new ISearchHitCollector(){
          @Override public void addQTCException(          QueryTooComplexException exception) throws QueryTooComplexException {
          }
          @Override public void addHits(          List<SearchHit> hits,          String wordsSearched){
            querySearchResult.addAll(hits);
          }
        }
);
      }
 catch (      Throwable e) {
        CommonExceptionHandler.process(e,Priority.WARN);
      }
      return Status.OK_STATUS;
    }
    @Override public boolean belongsTo(    Object family){
      return family.equals(FederatedSearchJob.FAMILY);
    }
  }
;
  try {
    searchInHelpJob.setPriority(Job.INTERACTIVE);
    searchInHelpJob.schedule();
    searchInHelpJob.join();
  }
 catch (  Throwable e) {
    CommonExceptionHandler.process(e,Priority.WARN);
  }
  Set<String> componentNames=new LinkedHashSet<String>();
  Iterator<SearchHit> iter=querySearchResult.iterator();
  while (iter.hasNext()) {
    SearchHit result=iter.next();
    String label=result.getLabel();
    if (label == null || label.trim().length() == 0) {
      continue;
    }
    componentNames.add(label);
  }
  return componentNames;
}

Fixed version (ground truth):
protected static Set<String> getRelatedComponentNamesFromHelp(final String keyword){
  if (keyword == null || keyword.isEmpty()) {
    return null;
  }
  final List<SearchHit> querySearchResult=new ArrayList<SearchHit>();
  if (searchInHelpJob != null && searchInHelpJob.getState() != Job.NONE) {
    searchInHelpJob.cancel();
  }
  searchInHelpJob=new Job(SEARCHING_FROM_HELP){
    @SuppressWarnings("String_Node_Str") @Override protected IStatus run(    IProgressMonitor monitor){
      String helpKeyword=keyword;
      try {
        TalendPaletteSearchIndex searchIndex=TalendPaletteSearchIndex.getInstance();
        LocalSearchManager localSearchManager=BaseHelpSystem.getLocalSearchManager();
        localSearchManager.ensureIndexUpdated(monitor,searchIndex);
        final String WHITESPACE="String_Node_Str";
        helpKeyword=helpKeyword + WHITESPACE + "String_Node_Str"+ WHITESPACE+ helpKeyword+ "String_Node_Str";
        ISearchQuery searchQuery=new SearchQuery(helpKeyword,false,new ArrayList<String>(),Platform.getNL());
        searchIndex.search(searchQuery,new ISearchHitCollector(){
          @Override public void addQTCException(          QueryTooComplexException exception) throws QueryTooComplexException {
          }
          @Override public void addHits(          List<SearchHit> hits,          String wordsSearched){
            querySearchResult.addAll(hits);
          }
        }
);
      }
 catch (      Throwable e) {
        CommonExceptionHandler.process(e,Priority.WARN);
      }
      return Status.OK_STATUS;
    }
    @Override public boolean belongsTo(    Object family){
      return family.equals(FederatedSearchJob.FAMILY);
    }
  }
;
  try {
    searchInHelpJob.setPriority(Job.INTERACTIVE);
    searchInHelpJob.schedule();
    searchInHelpJob.join();
  }
 catch (  Throwable e) {
    CommonExceptionHandler.process(e,Priority.WARN);
  }
  Set<String> componentNames=new LinkedHashSet<String>();
  Iterator<SearchHit> iter=querySearchResult.iterator();
  while (iter.hasNext()) {
    SearchHit result=iter.next();
    String label=result.getLabel();
    if (label == null || label.trim().length() == 0) {
      continue;
    }
    componentNames.add(label);
  }
  return componentNames;
}