[jboss-jira] [JBoss JIRA] (WFLY-3421) Rehashing on view change can result in premature session/ejb expiration

Paul Ferraro (JIRA) issues at jboss.org
Fri May 30 11:17:15 EDT 2014


Paul Ferraro created WFLY-3421:
----------------------------------

             Summary: Rehashing on view change can result in premature session/ejb expiration
                 Key: WFLY-3421
                 URL: https://issues.jboss.org/browse/WFLY-3421
             Project: WildFly
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: Clustering
    Affects Versions: 8.1.0.CR2
            Reporter: Paul Ferraro
            Assignee: Paul Ferraro
            Priority: Critical
             Fix For: 8.1.0.Final, 9.0.0.Alpha1


Session/ejb expiration is scheduled only the the owning node of a given session/ejb.  When a node leaves each node that assumes ownership of the sessions/ejbs that were previously owned by the leaving node schedules expiration of those sessions.  However, view change can also lead to ownership changes for any session/ejb.  We are currently handling this properly.  If a session/ejb changes ownership, the expiration scheduling is never cancelled, and that session/ejb will expire prematurely, unless the node reacquires ownership.  When using sticky sessions, this issue is not apparent, since subsequent requests will direct to the previous owner, who will cancel expiration on the old owner and reschedule expiration on the new owner properly.  However, this will be a problem for web sessions if sticky sessions is disabled - and for @Stateful EJBs, if the ejb client receives updated affinity information prior to subsequent requests.

There are 2 ways to address this:

# When a request arrives for an existing session/ejb, we immediately cancel any scheduled expiration/eviction.  This is currently a unicast, which typically results in a local call - but can go remote if the ownership has changed.  Making this a cluster-wide broadcast would fix the issue.
# We can allow the scheduler to expose the set of keys that are currently schedule, and, on topology change, cancel those sessions/ejbs for which the current node is no longer the owner - and reschedule on the new owner.

Option 1 adds an additional cluster-wide RPC per request.
Option 2 adds N*(N-1) unicast RPCs per view change, where N is the cluster size (i.e. each node sends 1 rpc to every other node containing the set of session/ejb IDs to schedule for expiration),

Option 2 is the least invasive solution - so we'll go with that.



--
This message was sent by Atlassian JIRA
(v6.2.3#6260)


More information about the jboss-jira mailing list