https://issues.apache.org/bugzilla/show_bug.cgi?id=49531

           Summary: singlesignon failover not working on
                    DeltaManager/cluster upon shutdown
           Product: Tomcat 6
           Version: 6.0.26
          Platform: HP
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Cluster
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: yok...@takedasd.com


Created an attachment (id=25672)
 --> (https://issues.apache.org/bugzilla/attachment.cgi?id=25672)
log

Tomcat 6.0.18, 20, 24, 26
OS:  Linux  2.6.18-194.3.1.el5 #1 SMP Sun May 2 04:17:42 EDT 2010 x86_64 x86_64
x86_64 GNU/Linux
Jdk 1.6.0_20

When the node shuts down and destroys the context, singlesignon removes
sessions created for the context.  Then, DeltaSession.expire() method is called
and then calls super.exire() method.   This sequence of events signals to the
listeners and one of listeners sends the message to SimpleTpcCluster that
propagates the message to other nodes in the same cluster.  Therefore, sso
session will be removed from other nodes upon shutdown.

I would like to request an enhancement that both sso session and regular
session identifiers should be retained on other nodes upon the node shutdown.


== DeltaSession.java ==
    public void expire(boolean notify, boolean notifyCluster) {
        if (expiring)
            return;
        String expiredId = getIdInternal();

        if(expiredId != null && manager != null &&
           manager instanceof DeltaManager) {
           DeltaManager dmanager = (DeltaManager)manager;           
              CatalinaCluster cluster = dmanager.getCluster();
              ClusterMessage msg = dmanager.requestCompleted(expiredId, true);
              if (msg != null) {
                 if(dmanager.doDomainReplication()) {
                    cluster.sendClusterDomain(msg);
                 } else {
                    cluster.send(msg);
                 }
              }
        }

        super.expire(notify);

        if (notifyCluster) {
            if (log.isDebugEnabled())
                log.debug(sm.getString("deltaSession.notifying",
                                       ((ClusterManager)manager).getName(), 
                                       new Boolean(isPrimarySession()), 
                                       expiredId));                             
            if ( manager instanceof DeltaManager ) {
                ( (DeltaManager) manager).sessionExpired(expiredId);
            }
        }
    }

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to