Interface SessionTracker

All Known Implementing Classes:
LeaderSessionTracker, LearnerSessionTracker, LocalSessionTracker, SessionTrackerImpl, UpgradeableSessionTracker

public interface SessionTracker
This is the basic interface that ZooKeeperServer uses to track sessions. The standalone and leader ZooKeeperServer use the same SessionTracker. The FollowerZooKeeperServer uses a SessionTracker which is basically a simple shell to track information to be forwarded to the leader.
  • Method Details

    • createSession

      long createSession(int sessionTimeout)
    • trackSession

      boolean trackSession(long id, int to)
      Track the session expire, not add to ZkDb.
      Parameters:
      id - sessionId
      to - sessionTimeout
      Returns:
      whether the session was newly tracked (if false, already tracked)
    • commitSession

      boolean commitSession(long id, int to)
      Add the session to the local session map or global one in zkDB.
      Parameters:
      id - sessionId
      to - sessionTimeout
      Returns:
      whether the session was newly added (if false, already existed)
    • touchSession

      boolean touchSession(long sessionId, int sessionTimeout)
      Parameters:
      sessionId -
      sessionTimeout -
      Returns:
      false if session is no longer active
    • setSessionClosing

      void setSessionClosing(long sessionId)
      Mark that the session is in the process of closing.
      Parameters:
      sessionId -
    • shutdown

      void shutdown()
    • removeSession

      void removeSession(long sessionId)
      Parameters:
      sessionId -
    • isTrackingSession

      boolean isTrackingSession(long sessionId)
      Parameters:
      sessionId -
      Returns:
      whether or not the SessionTracker is aware of this session
    • checkSession

      Checks whether the SessionTracker is aware of this session, the session is still active, and the owner matches. If the owner wasn't previously set, this sets the owner of the session. UnknownSessionException should never been thrown to the client. It is only used internally to deal with possible local session from other machine
      Parameters:
      sessionId -
      owner -
      Throws:
      KeeperException.SessionExpiredException
      KeeperException.SessionMovedException
      KeeperException.UnknownSessionException
    • checkGlobalSession

      void checkGlobalSession(long sessionId, Object owner) throws KeeperException.SessionExpiredException, KeeperException.SessionMovedException
      Strictly check that a given session is a global session or not
      Parameters:
      sessionId -
      owner -
      Throws:
      KeeperException.SessionExpiredException
      KeeperException.SessionMovedException
    • setOwner

      void setOwner(long id, Object owner) throws KeeperException.SessionExpiredException
      Throws:
      KeeperException.SessionExpiredException
    • dumpSessions

      void dumpSessions(PrintWriter pwriter)
      Text dump of session information, suitable for debugging.
      Parameters:
      pwriter - the output writer
    • getSessionExpiryMap

      Map<Long,Set<Long>> getSessionExpiryMap()
      Returns a mapping of time to session IDs that expire at that time.
    • getLocalSessionCount

      long getLocalSessionCount()
      If this session tracker supports local sessions, return how many. otherwise returns 0;
    • isLocalSessionsEnabled

      boolean isLocalSessionsEnabled()
    • globalSessions

      Set<Long> globalSessions()
      Get a set of global session IDs
    • localSessions

      Set<Long> localSessions()
      Get a set of local session IDs