Author: pero
Date: Thu Apr 5 02:41:20 2007
New Revision: 525783
URL: http://svn.apache.org/viewvc?view=rev&rev=525783
Log:
Add better GET access session message support with new DeltaManager
expireTolerance and updateActiveIntervall attributes.
Fix DeltaRequest missing synchonized
Fix DeltaRequest better error report at readRequest.
Modified:
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaRequest.java
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/mbeans-descriptors.xml
tomcat/container/tc5.5.x/webapps/docs/changelog.xml
tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml
Modified:
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java?view=diff&rev=525783&r1=525782&r2=525783
==============================================================================
---
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java
(original)
+++
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaManager.java
Thu Apr 5 02:41:20 2007
@@ -144,6 +144,17 @@
*/
private int sendAllSessionsWaitTime = 2 * 1000 ;
+ /**
+ * Send session access message every updateActiveInterval sec
+ */
+ private int updateActiveInterval = 60;
+
+ /**
+ * The default session maxInactiveInterval + tolerance time interval, in
seconds, between client requests before
+ * the servlet container may invalidate a backup session from other
cluster node.
+ */
+ private int expireTolerance = 300;
+
private ArrayList receivedMessageQueue = new ArrayList() ;
private boolean receiverQueue = false ;
@@ -237,6 +248,22 @@
}
+ public int getUpdateActiveInterval() {
+ return updateActiveInterval;
+ }
+
+ public void setUpdateActiveInterval(int updateActiveInterval) {
+ this.updateActiveInterval = updateActiveInterval;
+ }
+
+ public int getExpireTolerance() {
+ return expireTolerance;
+ }
+
+ public void setExpireTolerance(int expireTolerance) {
+ this.expireTolerance = expireTolerance;
+ }
+
/**
* @return Returns the counterSend_EVT_GET_ALL_SESSIONS.
*/
@@ -620,6 +647,7 @@
}
DeltaSession session = (DeltaSession) super.createSession(sessionId) ;
+ session.setExpireTolerance(this.expireTolerance);
if (distribute) {
sendCreateSession(session.getId(), session);
}
@@ -933,6 +961,8 @@
if (started) {
return;
}
+ if(log.isInfoEnabled())
+ log.info("Starting clustering manager...:"+getName());
started = true;
lifecycle.fireLifecycleEvent(START_EVENT, null);
@@ -1326,7 +1356,9 @@
if ((msg == null)) {
long replDelta = System.currentTimeMillis()
- session.getLastTimeReplicated();
- if (replDelta > (getMaxInactiveInterval() * 1000)) {
+ if (replDelta >= updateActiveInterval*1000 ||
+ (getMaxInactiveInterval()>=0 &&
+ replDelta >= getMaxInactiveInterval()*1000)) {
counterSend_EVT_SESSION_ACCESSED++;
msg = new SessionMessageImpl(getName(),
SessionMessage.EVT_SESSION_ACCESSED, null,
@@ -1493,7 +1525,7 @@
if (log.isDebugEnabled())
log.debug(sm.getString("deltaManager.receiveMessage.eventType",
getName(), msg.getEventTypeString(), sender));
-
+
switch (msg.getEventType()) {
case SessionMessage.EVT_GET_ALL_SESSIONS: {
handleGET_ALL_SESSIONS(msg,sender);
@@ -1632,6 +1664,7 @@
session.setValid(true);
session.setPrimarySession(false);
session.setCreationTime(msg.getTimestamp());
+ session.setExpireTolerance(this.expireTolerance);
session.access();
if(notifySessionListenersOnReplication)
session.setId(msg.getSessionID());
Modified:
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaRequest.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaRequest.java?view=diff&rev=525783&r1=525782&r2=525783
==============================================================================
---
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaRequest.java
(original)
+++
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaRequest.java
Thu Apr 5 02:41:20 2007
@@ -208,7 +208,7 @@
new Exception("Session Id is null for
setSessionId").fillInStackTrace().printStackTrace();
}
}
- public int getSize() {
+ public synchronized int getSize() {
return actions.size();
}
@@ -244,7 +244,12 @@
else {
info = new AttributeInfo(-1,-1,null,null);
}
- info.readExternal(in);
+ try {
+ info.readExternal(in);
+ } catch (java.io.IOException e) {
+ log.error("Decode failure in delta request receiver: sid=" +
sessionId + ", count=" + cnt + ", failure position=" + i);
+ throw e;
+ }
actions.addLast(info);
}//for
}
@@ -335,8 +340,8 @@
value = in.readObject();
}
- public synchronized void writeExternal(java.io.ObjectOutput out)
throws java.io.
- IOException {
+ public synchronized void writeExternal(java.io.ObjectOutput out)
+ throws java.io.IOException {
//type - int
//action - int
//name - String
Modified:
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java?view=diff&rev=525783&r1=525782&r2=525783
==============================================================================
---
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
(original)
+++
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/DeltaSession.java
Thu Apr 5 02:41:20 2007
@@ -183,6 +183,12 @@
private int maxInactiveInterval = -1;
/**
+ * The maxInactiveInterval + tolerance time interval, in seconds, between
client requests before
+ * the servlet container may invalidate a backup session from other
cluster node.
+ */
+ private int expireTolerance = 300;
+
+ /**
* Flag indicating whether this session is new or not.
*/
private boolean isNew = false;
@@ -609,7 +615,7 @@
expire(true);
}
} else {
- if (timeIdle >= (2 * maxInactiveInterval)) {
+ if (timeIdle >= (maxInactiveInterval+expireTolerance)) {
//if the session has been idle twice as long as allowed,
//the primary session has probably crashed, and no other
//requests are coming in. that is why we do this. otherwise
@@ -1655,6 +1661,14 @@
protected int getAccessCount() {
return accessCount;
+ }
+
+ protected void setExpireTolerance(int expireTolerance) {
+ this.expireTolerance = expireTolerance;
+ }
+
+ protected int getExpireTolerance() {
+ return expireTolerance;
}
}
Modified:
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/mbeans-descriptors.xml
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/mbeans-descriptors.xml?view=diff&rev=525783&r1=525782&r2=525783
==============================================================================
---
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/mbeans-descriptors.xml
(original)
+++
tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/session/mbeans-descriptors.xml
Thu Apr 5 02:41:20 2007
@@ -255,6 +255,14 @@
<attribute name="sendAllSessionsWaitTime"
description="wait time between send session block (default 2 sec)"
type="int" />
+
+ <attribute name="expireTolerance"
+ description="Auto expire tolerance interval for backup sessions
(default 300 sec)"
+ type="int" />
+
+ <attribute name="updateActiveIntervall"
+ description="Send session access to backup after this intervall
(default 60 sec)"
+ type="int" />
<operation name="listSessionIds"
description="Return the list of active session ids"
@@ -309,6 +317,7 @@
impact="ACTION"
returnType="void">
</operation>
+
<operation name="getAllClusterSessions"
description="send to oldest cluster member that this node need
all cluster sessions (resync member)"
impact="ACTION"
Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=525783&r1=525782&r2=525783
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Thu Apr 5 02:41:20 2007
@@ -71,6 +71,19 @@
<subsection name="Cluster">
<changelog>
<fix>
+ Receiver can also use tcpListenAddress with a hostname. (rjung, pero)
+ </fix>
+ <fix>
+ DeltaRequest synchronized getSize() and show log message as
+ readExternal() failure. (rjung, pero)
+ </fix>
+ <add>
+ Add DeltaManager expireTolerance attribute to quicker auto expire long
backup sessions. (rjung, pero)
+ </add>
+ <add>
+ Add DeltaManager updateActiveIntervall attribute to send every 60 sec
a session access message. (rjung, pero)
+ </add>
+ <fix>
<bug>39866</bug> Duplicate names appended to cluster manager name.
(yoavs)
</fix>
</changelog>
Modified: tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml
URL:
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml?view=diff&rev=525783&r1=525782&r2=525783
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/cluster-howto.xml Thu Apr 5 02:41:20
2007
@@ -390,7 +390,7 @@
primaryIndicator="true" />
<Valve
className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
enabled="true" />
-<Cluster/>
+</Cluster>
</source>
</p>
</section>
@@ -953,6 +953,18 @@
Only other GET_ALL_SESSION events are handle with date before state
transfer message.</td>
<td><code>true</code></td>
</tr>
+
+ <tr>
+ <td>updateActiveInterval</td>
+ <td>Send session access message every updateActiveInterval sec.</td>
+ <td><code>60</code></td>
+ </tr>
+
+ <tr>
+ <td>expireTolerance</td>
+ <td>Autoexpire backup session after MaxInactive + expireTolerance sec.</td>
+ <td><code>300</code></td>
+ </tr>
</table>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]