@Override
 protected RedisSession loadSession(final String clusterId, final RedisSession current) {
   long now = System.currentTimeMillis();
   RedisSession loaded;
   if (current == null) {
     LOG.debug(
         "[RedisSessionManager] loadSession - No session found in cache, loading id={}",
         clusterId);
     loaded = loadFromStore(clusterId, current);
   } else if (current.requestStarted()) {
     LOG.debug(
         "[RedisSessionManager] loadSession - Existing session found in cache, loading id={}",
         clusterId);
     loaded = loadFromStore(clusterId, current);
   } else {
     loaded = current;
   }
   if (loaded == null) {
     LOG.debug(
         "[RedisSessionManager] loadSession - No session found in Redis for id={}", clusterId);
     if (current != null) current.invalidate();
   } else if (loaded == current) {
     LOG.debug(
         "[RedisSessionManager] loadSession - No change found in Redis for session id={}",
         clusterId);
     return loaded;
   } else if (!loaded.lastNode.equals(getSessionIdManager().getWorkerName()) || current == null) {
     // if the session in the database has not already expired
     if (loaded.expiryTime * 1000 > now) {
       // session last used on a different node, or we don't have it in memory
       loaded.changeLastNode(getSessionIdManager().getWorkerName());
     } else {
       LOG.debug(
           "[RedisSessionManager] loadSession - Loaded session has expired, id={}", clusterId);
       loaded = null;
     }
   }
   return loaded;
 }