接会话机制一文中的会话超时检查
在会话机制一文中,我们对会话的超时检查机制进行了简单的说明。主要包括:
- 谁负责进行超时检查
- 超时检查的策略是什么
最后在超时检查的”会话清理“过程没有详细的说明,那么本文将对这一过程进行详细的说明。
涉及到的类
- SessionTracker.SessionExpirer,一个接口类
- SessionTrackerImpl中的变量:private final SessionExpirer expirer
- ZooKeeperServer,是SessionExpirer的实现类
会话清理过程
会话清理的工作主要是由实现类ZooKeeperServer中的expire(Session session)方法来完成的。代码如下:
public void expire(Session session) {
long sessionId = session.getSessionId();
close(sessionId);
}
可以看出整个会话清理的过程由close方法负责执行,该方法的代码为: