Program: 25341
Project: 25341
Buggy source:
@Override public synchronized void start(){
  super.start();
  sessionExpiryThread=Executors.newSingleThreadScheduledExecutor();
  sessionExpiryThread.scheduleWithFixedDelay(sessionExpiryRunnable,60,60,TimeUnit.MINUTES);
  if (restorableSessions == null || restorableSessions.size() <= 0) {
    LOG.info("String_Node_Str");
    return;
  }
  for (  GrillSessionImpl.GrillSessionPersistInfo persistInfo : restorableSessions) {
    try {
      GrillSessionHandle sessionHandle=persistInfo.getSessionHandle();
      restoreSession(sessionHandle,persistInfo.getUsername(),persistInfo.getPassword());
      GrillSessionImpl session=getSession(sessionHandle);
      session.setLastAccessTime(persistInfo.getLastAccessTime());
      session.getGrillSessionPersistInfo().setConfig(persistInfo.getConfig());
      session.getGrillSessionPersistInfo().setResources(persistInfo.getResources());
      session.setCurrentDatabase(persistInfo.getDatabase());
      for (      GrillSessionImpl.ResourceEntry resourceEntry : session.getResources()) {
        try {
          addResource(sessionHandle,resourceEntry.getType(),resourceEntry.getLocation(),false);
        }
 catch (        Exception e) {
          LOG.error("String_Node_Str" + session + "String_Node_Str"+ resourceEntry);
          throw new RuntimeException(e);
        }
      }
      for (      Map.Entry<String,String> cfg : session.getConfig().entrySet()) {
        try {
          setSessionParameter(sessionHandle,cfg.getKey(),cfg.getValue(),false);
        }
 catch (        Exception e) {
          LOG.error("String_Node_Str" + cfg.getKey() + "String_Node_Str"+ cfg.getValue()+ "String_Node_Str"+ session);
        }
      }
      LOG.info("String_Node_Str" + persistInfo.getSessionHandle().getPublicId());
    }
 catch (    GrillException e) {
      throw new RuntimeException(e);
    }
  }
  LOG.info("String_Node_Str" + restorableSessions.size() + "String_Node_Str");
}

Fixed version (ground truth):
@Override public synchronized void start(){
  super.start();
  sessionExpiryThread=Executors.newSingleThreadScheduledExecutor();
  sessionExpiryThread.scheduleWithFixedDelay(sessionExpiryRunnable,60,60,TimeUnit.MINUTES);
  if (restorableSessions == null || restorableSessions.size() <= 0) {
    LOG.info("String_Node_Str");
    return;
  }
  for (  GrillSessionImpl.GrillSessionPersistInfo persistInfo : restorableSessions) {
    try {
      GrillSessionHandle sessionHandle=persistInfo.getSessionHandle();
      restoreSession(sessionHandle,persistInfo.getUsername(),persistInfo.getPassword());
      GrillSessionImpl session=getSession(sessionHandle);
      session.setLastAccessTime(persistInfo.getLastAccessTime());
      session.getGrillSessionPersistInfo().setConfig(persistInfo.getConfig());
      session.getGrillSessionPersistInfo().setResources(persistInfo.getResources());
      session.setCurrentDatabase(persistInfo.getDatabase());
      for (      GrillSessionImpl.ResourceEntry resourceEntry : session.getResources()) {
        try {
          addResource(sessionHandle,resourceEntry.getType(),resourceEntry.getLocation());
        }
 catch (        Exception e) {
          LOG.error("String_Node_Str" + session + "String_Node_Str"+ resourceEntry);
          throw new RuntimeException(e);
        }
      }
      for (      Map.Entry<String,String> cfg : session.getConfig().entrySet()) {
        try {
          setSessionParameter(sessionHandle,cfg.getKey(),cfg.getValue(),false);
        }
 catch (        Exception e) {
          LOG.error("String_Node_Str" + cfg.getKey() + "String_Node_Str"+ cfg.getValue()+ "String_Node_Str"+ session);
        }
      }
      LOG.info("String_Node_Str" + persistInfo.getSessionHandle().getPublicId());
    }
 catch (    GrillException e) {
      throw new RuntimeException(e);
    }
  }
  LOG.info("String_Node_Str" + restorableSessions.size() + "String_Node_Str");
}