Remove duplicate calls when creating a replicated session to reduce the time taken to create the session and thereby reduce the chances of a subsequent session update message being ignored because the session does not yet exist.
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc8.0.x/trunk@1831413 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java b/java/org/apache/catalina/ha/session/DeltaManager.java
index d51a540..62fd667 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -1223,7 +1223,12 @@
counterReceive_EVT_SESSION_DELTA++;
byte[] delta = msg.getSession();
DeltaSession session = (DeltaSession) findSession(msg.getSessionID());
- if (session != null) {
+ if (session == null) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("deltaManager.receiveMessage.delta.unknown",
+ getName(), msg.getSessionID()));
+ }
+ } else {
if (log.isDebugEnabled()) {
log.debug(sm.getString("deltaManager.receiveMessage.delta",
getName(), msg.getSessionID()));
@@ -1289,7 +1294,6 @@
getName(), msg.getSessionID()));
}
DeltaSession session = (DeltaSession) createEmptySession();
- session.setManager(this);
session.setValid(true);
session.setPrimarySession(false);
session.setCreationTime(msg.getTimestamp());
@@ -1298,7 +1302,6 @@
session.setMaxInactiveInterval(getContext().getSessionTimeout() * 60, false);
session.access();
session.setId(msg.getSessionID(), notifySessionListenersOnReplication);
- session.resetDeltaRequest();
session.endAccess();
}
diff --git a/java/org/apache/catalina/ha/session/LocalStrings.properties b/java/org/apache/catalina/ha/session/LocalStrings.properties
index 6aa7f3b..c8a0bd6 100644
--- a/java/org/apache/catalina/ha/session/LocalStrings.properties
+++ b/java/org/apache/catalina/ha/session/LocalStrings.properties
@@ -37,6 +37,7 @@
deltaManager.receiveMessage.accessed=Manager [{0}]: received session [{1}] accessed.
deltaManager.receiveMessage.createNewSession=Manager [{0}]: received session [{1}] created.
deltaManager.receiveMessage.delta=Manager [{0}]: received session [{1}] delta.
+deltaManager.receiveMessage.delta.unknown=Manager [{0}]: received unknown session [{1}] delta.
deltaManager.receiveMessage.error=Manager [{0}]: Unable to receive message through TCP channel
deltaManager.receiveMessage.eventType=Manager [{0}]: Received SessionMessage of type=({1}) from [{2}]
deltaManager.receiveMessage.expired=Manager [{0}]: received session [{1}] expired.
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index c993da3..802de3b 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -103,6 +103,16 @@
</fix>
</changelog>
</subsection>
+ <subsection name="Cluster">
+ <changelog>
+ <fix>
+ Remove duplicate calls when creating a replicated session to reduce the
+ time taken to create the session and thereby reduce the chances of a
+ subsequent session update message being ignored because the session does
+ not yet exist. (markt)
+ </fix>
+ </changelog>
+ </subsection>
<subsection name="Tribes">
<changelog>
<fix>