Author: rjung Date: Wed Nov 26 20:55:43 2014 New Revision: 1641934 URL: http://svn.apache.org/r1641934 Log: Sync with TC 6, more use of super class.
Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaSession.java Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaSession.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaSession.java?rev=1641934&r1=1641933&r2=1641934&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaSession.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaSession.java Wed Nov 26 20:55:43 2014 @@ -335,113 +335,25 @@ public class DeltaSession extends Standa } public void expire(boolean notify, boolean notifyCluster) { - String expiredId = getIdInternal(); - // Check to see if expire is in progress or has previously been called - if (expiring || !isValid) + if (expiring) return; + String expiredId = getIdInternal(); - synchronized (this) { - // Check again, now we are inside the sync so this code only runs once - // Double check locking - expiring and isValid need to be volatile - if (expiring || !isValid) - return; - - if (manager == null) - return; - - - if(notifyCluster && expiredId != null && manager != null && - manager instanceof DeltaManager) { - DeltaManager dmanager = (DeltaManager)manager; - CatalinaCluster cluster = dmanager.getCluster(); - ClusterMessage msg = dmanager.requestCompleted(expiredId, true); - if (msg != null) { - if(dmanager.isSendClusterDomainOnly()) { - cluster.sendClusterDomain(msg); - } else { - cluster.send(msg); - } - } - } - - // Mark this session as "being expired" - expiring = true; - - // Notify interested application event listeners - // FIXME - Assumes we call listeners in reverse order - Context context = (Context) manager.getContainer(); - Object listeners[] = context.getApplicationLifecycleListeners(); - if (notify && (listeners != null)) { - HttpSessionEvent event = - new HttpSessionEvent(getSession()); - for (int i = 0; i < listeners.length; i++) { - int j = (listeners.length - 1) - i; - if (!(listeners[j] instanceof HttpSessionListener)) - continue; - HttpSessionListener listener = - (HttpSessionListener) listeners[j]; - try { - fireContainerEvent(context, - "beforeSessionDestroyed", - listener); - listener.sessionDestroyed(event); - fireContainerEvent(context, - "afterSessionDestroyed", - listener); - } catch (Throwable t) { - try { - fireContainerEvent(context, - "afterSessionDestroyed", - listener); - } catch (Exception e) { - ; - } - manager.getContainer().getLogger().error - (sm.getString("standardSession.sessionEvent"), t); - } - } - } - if (ACTIVITY_CHECK) { - accessCount.set(0); - } - setValid(false); - - /* - * Compute how long this session has been alive, and update - * session manager's related properties accordingly - */ - long timeNow = System.currentTimeMillis(); - int timeAlive = (int) ((timeNow - creationTime)/1000); - synchronized (manager) { - if (timeAlive > manager.getSessionMaxAliveTime()) { - manager.setSessionMaxAliveTime(timeAlive); + if(notifyCluster && expiredId != null && manager != null && + manager instanceof DeltaManager) { + DeltaManager dmanager = (DeltaManager)manager; + CatalinaCluster cluster = dmanager.getCluster(); + ClusterMessage msg = dmanager.requestCompleted(expiredId, true); + if (msg != null) { + if(dmanager.isSendClusterDomainOnly()) { + cluster.sendClusterDomain(msg); + } else { + cluster.send(msg); } - int numExpired = manager.getExpiredSessions(); - numExpired++; - manager.setExpiredSessions(numExpired); - int average = manager.getSessionAverageAliveTime(); - average = ((average * (numExpired-1)) + timeAlive)/numExpired; - manager.setSessionAverageAliveTime(average); - } - - // Remove this session from our manager's active sessions - manager.remove(this); - - // Notify interested session event listeners - if (notify) { - fireSessionEvent(Session.SESSION_DESTROYED_EVENT, null); } - - // We have completed expire of this session - expiring = false; - - // Unbind any objects associated with this session - String keys[] = keys(); - for (int i = 0; i < keys.length; i++) - removeAttributeInternal(keys[i], notify); - } + super.expire(notify); if (notifyCluster) { if (log.isDebugEnabled()) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org