public final void expire(List<String> expired) {
   if (isStopping() || isStopped()) return;
   ClassLoader old_loader = Thread.currentThread().getContextClassLoader();
   try {
     for (String expiredClusterId : expired) {
       LOG.debug("[SessionManagerSkeleton] Expiring session id={}", expiredClusterId);
       T session = sessions.get(expiredClusterId);
       if (session != null) session.timeout();
     }
   } catch (Throwable t) {
     if (t instanceof ThreadDeath) throw ((ThreadDeath) t);
     else LOG.warn("Problem expiring sessions", t);
   } finally {
     Thread.currentThread().setContextClassLoader(old_loader);
   }
 }
 /**
  * Copy constructor that creates a new request that is a copy of the one provided as an argument.
  * The new request will inherit though headers and context from the original request that caused
  * it.
  */
 protected ReplicationRequest(T request, ActionRequest originalRequest) {
   super(originalRequest);
   this.timeout = request.timeout();
   this.index = request.index();
   this.consistencyLevel = request.consistencyLevel();
 }