@Override
        public void run() {

            // The evictExpiredOrInvalidSessions() function should already
            // automatically handle and log all unexpected internal errors,
            // but wrap the entire call in a try/catch plus additional logging
            // to ensure that absolutely no errors can result in the entire
            // thread dying
            try {
                evictExpiredOrInvalidSessions();
            }
            catch (Throwable t) {
                logger.error("An unexpected internal error prevented the "
                        + "session eviction task from completing "
                        + "successfully. This should NOT happen and is likely "
                        + "a bug. Sessions that should have expired may "
                        + "remain valid.", t);
            }

        }
Iterates through all active sessions, evicting those sessions which
are beyond the session timeout, or are marked as invalid. Internal
errors which would otherwise stop the session eviction process are
caught, logged, and the process is allowed to proceed.
guacamole/src/main/java/org/apache/guacamole/rest/auth/HashTokenSessionMap.java