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>