Program: 61747
Project: 61747
Buggy source:
@Override public void start(Group group,ContentPath startingPath){
  channel=ChannelNameUtils.extractFromChannelUrl(group.getChannelUrl());
  ThreadFactory factory=new ThreadFactoryBuilder().setNameFormat("String_Node_Str" + group.getName() + "String_Node_Str").build();
  executorService=Executors.newSingleThreadScheduledExecutor(factory);
  int offset=getOffset();
  logger.info("String_Node_Str",group,offset);
  executorService.scheduleAtFixedRate(new Runnable(){
    ContentPath lastAdded=startingPath;
    @Override public void run(){
      try {
        if (!shouldExit.get()) {
          doWork();
        }
      }
 catch (      Exception e) {
        error.set(true);
        logger.warn("String_Node_Str" + channel,e);
      }
    }
    private void doWork(){
      try {
        DateTime nextTime=lastAdded.getTime().plusMinutes(1);
        if (lastAdded instanceof ContentKey) {
          nextTime=lastAdded.getTime();
        }
        DateTime stable=TimeUtil.stable().minusMinutes(1);
        if (channelService.isReplicating(channel)) {
          ContentPath contentPath=lastContentPath.get(channel,MinutePath.NONE,ChannelReplicator.REPLICATED_LAST_UPDATED);
          stable=contentPath.getTime().plusSeconds(1);
          logger.debug("String_Node_Str",contentPath,stable);
        }
        logger.debug("String_Node_Str",lastAdded,nextTime,stable);
        while (nextTime.isBefore(stable)) {
          Collection<ContentKey> keys=queryKeys(nextTime).stream().filter(key -> key.compareTo(lastAdded) > 0).collect(Collectors.toCollection(ArrayList::new));
          MinutePath nextPath=new MinutePath(nextTime,keys);
          logger.trace("String_Node_Str",channel,nextPath,nextPath.getKeys());
          queue.put(nextPath);
          lastAdded=nextPath;
          nextTime=lastAdded.getTime().plusMinutes(1);
        }
      }
 catch (      InterruptedException e) {
        logger.info("String_Node_Str" + channel + "String_Node_Str"+ e.getMessage());
        throw new RuntimeInterruptedException(e);
      }
    }
  }
,getOffset(),60,TimeUnit.SECONDS);
}

Fixed version (ground truth):
@Override public void start(Group group,ContentPath startingPath){
  ThreadFactory factory=new ThreadFactoryBuilder().setNameFormat("String_Node_Str" + group.getName() + "String_Node_Str").build();
  executorService=Executors.newSingleThreadScheduledExecutor(factory);
  int offset=getOffset();
  logger.info("String_Node_Str",group,offset);
  executorService.scheduleAtFixedRate(new Runnable(){
    ContentPath lastAdded=startingPath;
    @Override public void run(){
      try {
        if (!shouldExit.get()) {
          doWork();
        }
      }
 catch (      Exception e) {
        error.set(true);
        logger.warn("String_Node_Str" + channel,e);
      }
    }
    private void doWork(){
      try {
        DateTime nextTime=lastAdded.getTime().plusMinutes(1);
        if (lastAdded instanceof ContentKey) {
          nextTime=lastAdded.getTime();
        }
        DateTime stable=TimeUtil.stable().minusMinutes(1);
        if (channelService.isReplicating(channel)) {
          ContentPath contentPath=lastContentPath.get(channel,MinutePath.NONE,ChannelReplicator.REPLICATED_LAST_UPDATED);
          stable=contentPath.getTime().plusSeconds(1);
          logger.debug("String_Node_Str",contentPath,stable);
        }
        logger.debug("String_Node_Str",lastAdded,nextTime,stable);
        while (nextTime.isBefore(stable)) {
          Collection<ContentKey> keys=queryKeys(nextTime).stream().filter(key -> key.compareTo(lastAdded) > 0).collect(Collectors.toCollection(ArrayList::new));
          MinutePath nextPath=new MinutePath(nextTime,keys);
          logger.trace("String_Node_Str",channel,nextPath,nextPath.getKeys());
          queue.put(nextPath);
          lastAdded=nextPath;
          nextTime=lastAdded.getTime().plusMinutes(1);
        }
      }
 catch (      InterruptedException e) {
        logger.info("String_Node_Str" + channel + "String_Node_Str"+ e.getMessage());
        throw new RuntimeInterruptedException(e);
      }
    }
  }
,getOffset(),60,TimeUnit.SECONDS);
}