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: [email protected]
For additional commands, e-mail: [email protected]