[jboss-jira] [JBoss JIRA] Updated: (JBAS-3545) HASessionState state transfer incorrect for replicated sessions
Galder Zamarreno (JIRA)
jira-events at jboss.com
Tue Aug 22 12:39:11 EDT 2006
[ http://jira.jboss.com/jira/browse/JBAS-3545?page=all ]
Galder Zamarreno updated JBAS-3545:
-----------------------------------
Affects Version/s: JBossAS-4.0.4.GA
> HASessionState state transfer incorrect for replicated sessions
> ---------------------------------------------------------------
>
> Key: JBAS-3545
> URL: http://jira.jboss.com/jira/browse/JBAS-3545
> Project: JBoss Application Server
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: Clustering
> Affects Versions: JBossAS-4.0.1 Final, JBossAS-3.2.7 Final, JBossAS-3.2.6 Final, JBossAS-4.0.2 Final, JBossAS-3.2.5 Final, JBossAS-4.0.1 SP1, JBossAS-4.0.3 Final, JBossAS-4.0.3 SP1, JBossAS-3.2.8 Final, JBossAS-3.2.8.SP1, JBossAS-4.0.4.GA
> Reporter: Brian Stansberry
> Assigned To: Brian Stansberry
> Fix For: JBossAS-4.0.5.CR1
>
>
> When HASessionStateImpl prepares state for a state transfer, it uses a timestamp check to see whether a bean is overaged before including it in the state. If the bean is overaged it removes it from its replicated cache. (Note that this is a separate and distinct process from the standard SFSB passivation and removal process.)
> This algorithm is broken for sessions that are not active on the node preparing the state transfer for two reasons:
> 1) The transient field used to store the modification timestamp (in PackagedSessionImpl) is initialized as part of its declaration:
> protected transient long lastModificationTimeInVM = System.currentTimeMillis ();
> This means the value will not be properly initialized when PackagedSessionImpl is deserialized, as is explained at http://forum.java.sun.com/thread.jspa?threadID=584981&messageID=3002515.
> 2) The lastModificationTimeInVM field is also not updated in the update() method, which is the method that gets called when state updates are replicated from another node.
> The effect of this is that when a state transfer is prepared, all remote beans will be removed from the replicated cache of the preparing node. At a minimum this means the bean won't be included in the state transfer; it may have other insidious effects on the preparing node as well.
> Fix is to initialize the transient field in the constructor and readObject() and to update it in the update() method.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list