You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/05/16 12:54:59 UTC
[tomcat] 02/03: Fix
https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit ab70de3278d5e506661faeb5febf71a061b89179
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu May 16 13:36:39 2019 +0100
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
Refactor the DeltaRequest serialization to reduce the window during
which the DeltaSession is locked and to remove a potential cause of
deadlocks during serialization.
---
.../apache/catalina/ha/session/DeltaManager.java | 19 ++++++++++++++-----
.../apache/catalina/ha/session/DeltaSession.java | 22 ++++++++++++++++++++++
webapps/docs/changelog.xml | 6 ++++++
3 files changed, 42 insertions(+), 5 deletions(-)
diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java b/java/org/apache/catalina/ha/session/DeltaManager.java
index 9f3abef..7f0df95 100644
--- a/java/org/apache/catalina/ha/session/DeltaManager.java
+++ b/java/org/apache/catalina/ha/session/DeltaManager.java
@@ -39,6 +39,7 @@ import org.apache.catalina.tribes.io.ReplicationStream;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.collections.SynchronizedStack;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -88,6 +89,7 @@ public class DeltaManager extends ClusterManagerBase{
private boolean receiverQueue = false ;
private boolean stateTimestampDrop = true ;
private volatile long stateTransferCreateSendTime;
+ private SynchronizedStack<DeltaRequest> deltaRequestPool = new SynchronizedStack<>();
// -------------------------------------------------------- stats attributes
@@ -952,10 +954,10 @@ public class DeltaManager extends ClusterManagerBase{
* whether this method has been called during session expiration
* @return a SessionMessage to be sent,
*/
- @SuppressWarnings("null") // session can't be null when it is used
public ClusterMessage requestCompleted(String sessionId, boolean expires) {
DeltaSession session = null;
SessionMessage msg = null;
+ DeltaRequest deltaRequest = null;
try {
session = (DeltaSession) findSession(sessionId);
if (session == null) {
@@ -963,8 +965,12 @@ public class DeltaManager extends ClusterManagerBase{
// removed the session from the Manager.
return null;
}
- DeltaRequest deltaRequest = session.getDeltaRequest();
- session.lock();
+ DeltaRequest newDeltaRequest = deltaRequestPool.pop();
+ if (newDeltaRequest == null) {
+ // Will be configured in replaceDeltaRequest()
+ newDeltaRequest = new DeltaRequest();
+ }
+ deltaRequest = session.replaceDeltaRequest(newDeltaRequest);
if (deltaRequest.getSize() > 0) {
counterSend_EVT_SESSION_DELTA++;
byte[] data = serializeDeltaRequest(session,deltaRequest);
@@ -973,14 +979,17 @@ public class DeltaManager extends ClusterManagerBase{
data,
sessionId,
sessionId + "-" + System.currentTimeMillis());
- session.resetDeltaRequest();
}
} catch (IOException x) {
log.error(sm.getString("deltaManager.createMessage.unableCreateDeltaRequest",
sessionId), x);
return null;
} finally {
- if (session!=null) session.unlock();
+ if (deltaRequest != null) {
+ // Reset the instance before it is returned to the pool
+ deltaRequest.reset();
+ deltaRequestPool.push(deltaRequest);
+ }
}
if(msg == null) {
if(!expires && !session.isPrimarySession()) {
diff --git a/java/org/apache/catalina/ha/session/DeltaSession.java b/java/org/apache/catalina/ha/session/DeltaSession.java
index d25f622..8a186ce 100644
--- a/java/org/apache/catalina/ha/session/DeltaSession.java
+++ b/java/org/apache/catalina/ha/session/DeltaSession.java
@@ -608,6 +608,26 @@ public class DeltaSession extends StandardSession implements Externalizable,Clus
return deltaRequest;
}
+ /**
+ * Replace the existing deltaRequest with the provided replacement.
+ *
+ * @param deltaRequest The new deltaRequest. Expected to be either a newly
+ * created object or an instance that has been reset.
+ *
+ * @return The old deltaRequest
+ */
+ DeltaRequest replaceDeltaRequest(DeltaRequest deltaRequest) {
+ lock();
+ try {
+ DeltaRequest oldDeltaRequest = this.deltaRequest;
+ this.deltaRequest = deltaRequest;
+ this.deltaRequest.setSessionId(getIdInternal());
+ return oldDeltaRequest;
+ } finally {
+ unlock();
+ }
+ }
+
// ------------------------------------------------- HttpSession Properties
@@ -668,6 +688,8 @@ public class DeltaSession extends StandardSession implements Externalizable,Clus
public void setAttribute(String name, Object value, boolean notify,boolean addDeltaRequest) {
+ log.info("setAttribute name [" + name + ", value [" + value + "]");
+
// Name cannot be null
if (name == null) throw new IllegalArgumentException(sm.getString("standardSession.setAttribute.namenull"));
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index cfd34e2..c08fa7e 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -132,6 +132,12 @@
<subsection name="Cluster">
<changelog>
<fix>
+ <bug>62841</bug>: Refactor the <code>DeltaRequest</code> serialization
+ to reduce the window during which the <code>DeltaSession</code> is
+ locked and to remove a potential cause of deadlocks during
+ serialization. (markt)
+ </fix>
+ <fix>
<bug>63441</bug>: Further streamline the processing of session creation
messages in the <code>DeltaManager</code> to reduce the possibility of a
session update message being processed before the session has been
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] 02/03: Fix
https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
Posted by Mark Thomas <ma...@apache.org>.
On 23/05/2019 03:14, Keiichi Fujino wrote:
> 2019年5月22日(水) 20:27 Mark Thomas <markt@apache.org
> <ma...@apache.org>>:
>
> On 22/05/2019 07:37, Keiichi Fujino wrote:
>
> <snip/>
>
> > It seems that the recordAllActions flag is not set in the newly
> created
> > DeltaRequest.
>
> I reworked the patch multiple times and forgot that for this iteration.
> Thanks for catching it. I've fixed this with an additional commit.
>
> > There are duplicated codes in DeltaManager#requestCompleted and
> > DeltaSession#getDiff.
> > It may be able to call getDiff method in the
> DeltaManager#requestCompleted.
>
> Good call. Fixed.
>
> > The same is true for
> DeltaManager#deserializeAndExecuteDeltaRequest and
> > applyDiff.
>
> I couldn't see this. There are some similarities but don't see how this
> could work.
>
> The unit tests passed so I plan to commit (and back-port) this unless
> there are objections.
>
>
> I have no objection.
> Thanks.
Thanks for the review. Much appreciated.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] 02/03: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841
poss deadlock
Posted by Keiichi Fujino <kf...@apache.org>.
2019年5月22日(水) 20:27 Mark Thomas <ma...@apache.org>:
> On 22/05/2019 07:37, Keiichi Fujino wrote:
>
> <snip/>
>
> > It seems that the recordAllActions flag is not set in the newly created
> > DeltaRequest.
>
> I reworked the patch multiple times and forgot that for this iteration.
> Thanks for catching it. I've fixed this with an additional commit.
>
> > There are duplicated codes in DeltaManager#requestCompleted and
> > DeltaSession#getDiff.
> > It may be able to call getDiff method in the
> DeltaManager#requestCompleted.
>
> Good call. Fixed.
>
> > The same is true for DeltaManager#deserializeAndExecuteDeltaRequest and
> > applyDiff.
>
> I couldn't see this. There are some similarities but don't see how this
> could work.
>
> The unit tests passed so I plan to commit (and back-port) this unless
> there are objections.
>
>
I have no objection.
Thanks.
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
--
Keiichi.Fujino
Re: [tomcat] 02/03: Fix
https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
Posted by Mark Thomas <ma...@apache.org>.
On 22/05/2019 07:37, Keiichi Fujino wrote:
<snip/>
> It seems that the recordAllActions flag is not set in the newly created
> DeltaRequest.
I reworked the patch multiple times and forgot that for this iteration.
Thanks for catching it. I've fixed this with an additional commit.
> There are duplicated codes in DeltaManager#requestCompleted and
> DeltaSession#getDiff.
> It may be able to call getDiff method in the DeltaManager#requestCompleted.
Good call. Fixed.
> The same is true for DeltaManager#deserializeAndExecuteDeltaRequest and
> applyDiff.
I couldn't see this. There are some similarities but don't see how this
could work.
The unit tests passed so I plan to commit (and back-port) this unless
there are objections.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] 02/03: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841
poss deadlock
Posted by Keiichi Fujino <kf...@apache.org>.
2019年5月22日(水) 6:43 Mark Thomas <ma...@apache.org>:
> On 21/05/2019 13:34, Mark Thomas wrote:
> > On 21/05/2019 09:03, Keiichi Fujino wrote:
> >> 2019年5月16日(木) 21:55 <markt@apache.org <ma...@apache.org>>:
> >>
> >> This is an automated email from the ASF dual-hosted git repository.
> >>
> >> markt pushed a commit to branch master
> >> in repository https://gitbox.apache.org/repos/asf/tomcat.git
> >>
> >> commit ab70de3278d5e506661faeb5febf71a061b89179
> >> Author: Mark Thomas <markt@apache.org <ma...@apache.org>>
> >> AuthorDate: Thu May 16 13:36:39 2019 +0100
> >>
> >> Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss
> >> deadlock
> >>
> >> Refactor the DeltaRequest serialization to reduce the window
> during
> >> which the DeltaSession is locked and to remove a potential
> cause of
> >> deadlocks during serialization.
>
> <snip/>
> >> Do you have any plan for applying this for using BackupManager ?
> >> There are similar codes in AbstractReplicatedMap#replicate.
> >> Do we need to apply a similar fix to AbstractReplicatedMap#replicate ?
> >
> > Probably. I'll trace the call hierarchy back from
> > DeltaRequest.serialize() and ensure nothing is holding the session lock.
>
> This is proving much trickier than it first appeared.
>
> I've had to do a fair bit of refactoring to fix this for the
> DeltaManager. My first (untested) attempt is here:
>
> https://github.com/markt-asf/tomcat/commits/bz62481-backup-manager
> (the final 3 commits)
>
> It is a bit too invasive for me to be comfortable just committing it. I
> also want to run the unit tests (although they don't test this code much).
>
> Feedback welcome.
>
>
It seems that the recordAllActions flag is not set in the newly created
DeltaRequest.
There are duplicated codes in DeltaManager#requestCompleted and
DeltaSession#getDiff.
It may be able to call getDiff method in the DeltaManager#requestCompleted.
The same is true for DeltaManager#deserializeAndExecuteDeltaRequest and
applyDiff.
> Mark
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
--
Keiichi.Fujino
Re: [tomcat] 02/03: Fix
https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
Posted by Mark Thomas <ma...@apache.org>.
On 21/05/2019 13:34, Mark Thomas wrote:
> On 21/05/2019 09:03, Keiichi Fujino wrote:
>> 2019年5月16日(木) 21:55 <markt@apache.org <ma...@apache.org>>:
>>
>> This is an automated email from the ASF dual-hosted git repository.
>>
>> markt pushed a commit to branch master
>> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>>
>> commit ab70de3278d5e506661faeb5febf71a061b89179
>> Author: Mark Thomas <markt@apache.org <ma...@apache.org>>
>> AuthorDate: Thu May 16 13:36:39 2019 +0100
>>
>> Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss
>> deadlock
>>
>> Refactor the DeltaRequest serialization to reduce the window during
>> which the DeltaSession is locked and to remove a potential cause of
>> deadlocks during serialization.
<snip/>
>> Do you have any plan for applying this for using BackupManager ?
>> There are similar codes in AbstractReplicatedMap#replicate.
>> Do we need to apply a similar fix to AbstractReplicatedMap#replicate ?
>
> Probably. I'll trace the call hierarchy back from
> DeltaRequest.serialize() and ensure nothing is holding the session lock.
This is proving much trickier than it first appeared.
I've had to do a fair bit of refactoring to fix this for the
DeltaManager. My first (untested) attempt is here:
https://github.com/markt-asf/tomcat/commits/bz62481-backup-manager
(the final 3 commits)
It is a bit too invasive for me to be comfortable just committing it. I
also want to run the unit tests (although they don't test this code much).
Feedback welcome.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] 02/03: Fix
https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
Posted by Mark Thomas <ma...@homeinbox.net>.
On 21/05/2019 09:03, Keiichi Fujino wrote:
> 2019年5月16日(木) 21:55 <markt@apache.org <ma...@apache.org>>:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> markt pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>
> commit ab70de3278d5e506661faeb5febf71a061b89179
> Author: Mark Thomas <markt@apache.org <ma...@apache.org>>
> AuthorDate: Thu May 16 13:36:39 2019 +0100
>
> Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss
> deadlock
>
> Refactor the DeltaRequest serialization to reduce the window during
> which the DeltaSession is locked and to remove a potential cause of
> deadlocks during serialization.
<snip/>
> In DeltaManager#serializeDeltaRequest, the session lock has been is
> obtained.
> Do we need to remove it? or replace to deltaRequest.serialize();
You are correct. The deadlock is still going to occur. I think we need
to deprecate serializeDeltaRequest().
> Do you have any plan for applying this for using BackupManager ?
> There are similar codes in AbstractReplicatedMap#replicate.
> Do we need to apply a similar fix to AbstractReplicatedMap#replicate ?
Probably. I'll trace the call hierarchy back from
DeltaRequest.serialize() and ensure nothing is holding the session lock.
Thanks for the review.
Mark
>
>
>
>
> // -------------------------------------------------
> HttpSession Properties
>
> @@ -668,6 +688,8 @@ public class DeltaSession extends
> StandardSession implements Externalizable,Clus
>
> public void setAttribute(String name, Object value, boolean
> notify,boolean addDeltaRequest) {
>
> + log.info <http://log.info>("setAttribute name [" + name +
> ", value [" + value + "]");
> +
> // Name cannot be null
> if (name == null) throw new
> IllegalArgumentException(sm.getString("standardSession.setAttribute.namenull"));
>
> diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
> index cfd34e2..c08fa7e 100644
> --- a/webapps/docs/changelog.xml
> +++ b/webapps/docs/changelog.xml
> @@ -132,6 +132,12 @@
> <subsection name="Cluster">
> <changelog>
> <fix>
> + <bug>62841</bug>: Refactor the <code>DeltaRequest</code>
> serialization
> + to reduce the window during which the
> <code>DeltaSession</code> is
> + locked and to remove a potential cause of deadlocks during
> + serialization. (markt)
> + </fix>
> + <fix>
> <bug>63441</bug>: Further streamline the processing of
> session creation
> messages in the <code>DeltaManager</code> to reduce the
> possibility of a
> session update message being processed before the session
> has been
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> <ma...@tomcat.apache.org>
> For additional commands, e-mail: dev-help@tomcat.apache.org
> <ma...@tomcat.apache.org>
>
>
>
> --
> Keiichi.Fujino
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: [tomcat] 02/03: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841
poss deadlock
Posted by Keiichi Fujino <kf...@apache.org>.
2019年5月16日(木) 21:55 <ma...@apache.org>:
> This is an automated email from the ASF dual-hosted git repository.
>
> markt pushed a commit to branch master
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>
> commit ab70de3278d5e506661faeb5febf71a061b89179
> Author: Mark Thomas <ma...@apache.org>
> AuthorDate: Thu May 16 13:36:39 2019 +0100
>
> Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62841 poss deadlock
>
> Refactor the DeltaRequest serialization to reduce the window during
> which the DeltaSession is locked and to remove a potential cause of
> deadlocks during serialization.
> ---
> .../apache/catalina/ha/session/DeltaManager.java | 19
> ++++++++++++++-----
> .../apache/catalina/ha/session/DeltaSession.java | 22
> ++++++++++++++++++++++
> webapps/docs/changelog.xml | 6 ++++++
> 3 files changed, 42 insertions(+), 5 deletions(-)
>
> diff --git a/java/org/apache/catalina/ha/session/DeltaManager.java
> b/java/org/apache/catalina/ha/session/DeltaManager.java
> index 9f3abef..7f0df95 100644
> --- a/java/org/apache/catalina/ha/session/DeltaManager.java
> +++ b/java/org/apache/catalina/ha/session/DeltaManager.java
> @@ -39,6 +39,7 @@ import org.apache.catalina.tribes.io.ReplicationStream;
> import org.apache.juli.logging.Log;
> import org.apache.juli.logging.LogFactory;
> import org.apache.tomcat.util.ExceptionUtils;
> +import org.apache.tomcat.util.collections.SynchronizedStack;
> import org.apache.tomcat.util.res.StringManager;
>
> /**
> @@ -88,6 +89,7 @@ public class DeltaManager extends ClusterManagerBase{
> private boolean receiverQueue = false ;
> private boolean stateTimestampDrop = true ;
> private volatile long stateTransferCreateSendTime;
> + private SynchronizedStack<DeltaRequest> deltaRequestPool = new
> SynchronizedStack<>();
>
> // -------------------------------------------------------- stats
> attributes
>
> @@ -952,10 +954,10 @@ public class DeltaManager extends ClusterManagerBase{
> * whether this method has been called during session
> expiration
> * @return a SessionMessage to be sent,
> */
> - @SuppressWarnings("null") // session can't be null when it is used
> public ClusterMessage requestCompleted(String sessionId, boolean
> expires) {
> DeltaSession session = null;
> SessionMessage msg = null;
> + DeltaRequest deltaRequest = null;
> try {
> session = (DeltaSession) findSession(sessionId);
> if (session == null) {
> @@ -963,8 +965,12 @@ public class DeltaManager extends ClusterManagerBase{
> // removed the session from the Manager.
> return null;
> }
> - DeltaRequest deltaRequest = session.getDeltaRequest();
> - session.lock();
> + DeltaRequest newDeltaRequest = deltaRequestPool.pop();
> + if (newDeltaRequest == null) {
> + // Will be configured in replaceDeltaRequest()
> + newDeltaRequest = new DeltaRequest();
> + }
> + deltaRequest = session.replaceDeltaRequest(newDeltaRequest);
> if (deltaRequest.getSize() > 0) {
> counterSend_EVT_SESSION_DELTA++;
> byte[] data = serializeDeltaRequest(session,deltaRequest);
> @@ -973,14 +979,17 @@ public class DeltaManager extends ClusterManagerBase{
> data,
> sessionId,
> sessionId + "-" +
> System.currentTimeMillis());
> - session.resetDeltaRequest();
> }
> } catch (IOException x) {
>
> log.error(sm.getString("deltaManager.createMessage.unableCreateDeltaRequest",
> sessionId), x);
> return null;
> } finally {
> - if (session!=null) session.unlock();
> + if (deltaRequest != null) {
> + // Reset the instance before it is returned to the pool
> + deltaRequest.reset();
> + deltaRequestPool.push(deltaRequest);
> + }
> }
> if(msg == null) {
> if(!expires && !session.isPrimarySession()) {
> diff --git a/java/org/apache/catalina/ha/session/DeltaSession.java
> b/java/org/apache/catalina/ha/session/DeltaSession.java
> index d25f622..8a186ce 100644
> --- a/java/org/apache/catalina/ha/session/DeltaSession.java
> +++ b/java/org/apache/catalina/ha/session/DeltaSession.java
> @@ -608,6 +608,26 @@ public class DeltaSession extends StandardSession
> implements Externalizable,Clus
> return deltaRequest;
> }
>
> + /**
> + * Replace the existing deltaRequest with the provided replacement.
> + *
> + * @param deltaRequest The new deltaRequest. Expected to be either a
> newly
> + * created object or an instance that has been
> reset.
> + *
> + * @return The old deltaRequest
> + */
> + DeltaRequest replaceDeltaRequest(DeltaRequest deltaRequest) {
> + lock();
> + try {
> + DeltaRequest oldDeltaRequest = this.deltaRequest;
> + this.deltaRequest = deltaRequest;
> + this.deltaRequest.setSessionId(getIdInternal());
> + return oldDeltaRequest;
> + } finally {
> + unlock();
> + }
> + }
> +
>
>
In DeltaManager#serializeDeltaRequest, the session lock has been is
obtained.
Do we need to remove it? or replace to deltaRequest.serialize();
Do you have any plan for applying this for using BackupManager ?
There are similar codes in AbstractReplicatedMap#replicate.
Do we need to apply a similar fix to AbstractReplicatedMap#replicate ?
> // ------------------------------------------------- HttpSession
> Properties
>
> @@ -668,6 +688,8 @@ public class DeltaSession extends StandardSession
> implements Externalizable,Clus
>
> public void setAttribute(String name, Object value, boolean
> notify,boolean addDeltaRequest) {
>
> + log.info("setAttribute name [" + name + ", value [" + value +
> "]");
> +
> // Name cannot be null
> if (name == null) throw new
> IllegalArgumentException(sm.getString("standardSession.setAttribute.namenull"));
>
> diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
> index cfd34e2..c08fa7e 100644
> --- a/webapps/docs/changelog.xml
> +++ b/webapps/docs/changelog.xml
> @@ -132,6 +132,12 @@
> <subsection name="Cluster">
> <changelog>
> <fix>
> + <bug>62841</bug>: Refactor the <code>DeltaRequest</code>
> serialization
> + to reduce the window during which the <code>DeltaSession</code> is
> + locked and to remove a potential cause of deadlocks during
> + serialization. (markt)
> + </fix>
> + <fix>
> <bug>63441</bug>: Further streamline the processing of session
> creation
> messages in the <code>DeltaManager</code> to reduce the
> possibility of a
> session update message being processed before the session has been
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>
--
Keiichi.Fujino