public void start() { final String name = "XMemcached-HeartBeatPool[" + client.getName() + "]"; final AtomicInteger threadCounter = new AtomicInteger(); long keepAliveTime = client.getConnector().getSessionIdleTimeout() * 3 / 2; this.heartBeatThreadPool = new ThreadPoolExecutor(1, MAX_HEARTBEAT_THREADS, keepAliveTime, TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>(), new ThreadFactory() { public Thread newThread(Runnable r) { Thread t = new Thread(r, name + "-" + threadCounter.getAndIncrement()); t.setDaemon(true); if (t.getPriority() != Thread.NORM_PRIORITY) { t.setPriority(Thread.NORM_PRIORITY); } return t; } }, new ThreadPoolExecutor.DiscardPolicy()); }
/** * Check if have to reconnect on session closed */ @Override public final void onSessionClosed(Session session) { this.client.getConnector().removeSession(session); // Clear write queue to release noreply operations. ((AbstractSession) session).clearWriteQueue(); MemcachedTCPSession memcachedSession = (MemcachedTCPSession) session; // destroy memached session memcachedSession.destroy(); if (this.client.getConnector().isStarted() && memcachedSession.isAllowReconnect()) { this.reconnect(memcachedSession); } for (MemcachedClientStateListener listener : this.client.getStateListeners()) { listener.onDisconnected(this.client, session.getRemoteSocketAddress()); } }
this.memcachedClient.getConnector().getSessionByAddress(this.inetSocketAddress); if (sessions == null || sessions.size() == 0) { throw new MemcachedException(
/** * Auto reconect to memcached server * * @param session */ protected void reconnect(MemcachedTCPSession session) { if (!this.client.isShutdown()) { // Prevent reconnecting repeatedly synchronized (session) { if (!session.isAllowReconnect()) { return; } session.setAllowReconnect(false); } MemcachedSession memcachedTCPSession = session; InetSocketAddressWrapper inetSocketAddressWrapper = memcachedTCPSession.getInetSocketAddressWrapper(); this.client.getConnector().addToWatingQueue( new ReconnectRequest(inetSocketAddressWrapper, 0, this.client.getHealSessionInterval())); } }
public void start() { final String name = "XMemcached-HeartBeatPool[" + client.getName() + "]"; final AtomicInteger threadCounter = new AtomicInteger(); long keepAliveTime = client.getConnector().getSessionIdleTimeout() * 3 / 2; this.heartBeatThreadPool = new ThreadPoolExecutor(1, MAX_HEARTBEAT_THREADS, keepAliveTime, TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>(), new ThreadFactory() { public Thread newThread(Runnable r) { Thread t = new Thread(r, name + "-" + threadCounter.getAndIncrement()); t.setDaemon(true); if (t.getPriority() != Thread.NORM_PRIORITY) { t.setPriority(Thread.NORM_PRIORITY); } return t; } }, new ThreadPoolExecutor.DiscardPolicy()); }
/** * Check if have to reconnect on session closed */ @Override public final void onSessionClosed(Session session) { this.client.getConnector().removeSession(session); // Clear write queue to release noreply operations. ((AbstractSession) session).clearWriteQueue(); MemcachedTCPSession memcachedSession = (MemcachedTCPSession) session; // destroy memached session memcachedSession.destroy(); if (this.client.getConnector().isStarted() && memcachedSession.isAllowReconnect()) { this.reconnect(memcachedSession); } for (MemcachedClientStateListener listener : this.client.getStateListeners()) { listener.onDisconnected(this.client, session.getRemoteSocketAddress()); } }
this.memcachedClient.getConnector().getSessionByAddress(this.inetSocketAddress); if (sessions == null || sessions.size() == 0) { throw new MemcachedException(
/** * Auto reconect to memcached server * * @param session */ protected void reconnect(MemcachedTCPSession session) { if (!this.client.isShutdown()) { // Prevent reconnecting repeatedly synchronized (session) { if (!session.isAllowReconnect()) { return; } session.setAllowReconnect(false); } MemcachedSession memcachedTCPSession = session; InetSocketAddressWrapper inetSocketAddressWrapper = memcachedTCPSession.getInetSocketAddressWrapper(); this.client.getConnector().addToWatingQueue( new ReconnectRequest(inetSocketAddressWrapper, 0, this.client.getHealSessionInterval())); } }