Wednesday, April 17, 2013

Session Failover with Sun GlassFish(tm) Message Queue 4.4 - Part II

Now, what if the pair of OpenAM servers are running and suddenly the Message Broker has stopped abruptly?




Firstly, nothing will happen. Not until the next person tries to access either of the OpenAM.


Then you should be able to see the following exception stack trace in Session debug log:


amSession:04/16/2013 10:51:38:087 PM SGT: Thread[http-bio-9080-exec-20,5,main]
SessionID(HttpServletRequest) : is forward = null
amSession:04/16/2013 10:51:38:091 PM SGT: Thread[http-bio-9080-exec-20,5,main]
JMQSessionRepository.save(): session size=3192 bytes
amSession:04/16/2013 10:51:38:097 PM SGT: Thread[http-bio-9080-exec-20,5,main]
ERROR: Session failover service is not functional due to DB unavailability.
javax.jms.IllegalStateException: [C4059]: Cannot perform operation, session is closed.
at com.sun.messaging.jmq.jmsclient.SessionImpl.checkSessionState(SessionImpl.java:1844)
at com.sun.messaging.jmq.jmsclient.SessionImpl.createBytesMessage(SessionImpl.java:1873)
at com.sun.identity.ha.jmqdb.FAMRecordJMQPersister.send(FAMRecordJMQPersister.java:272)
at com.iplanet.dpro.session.JMQSessionRepository.save(JMQSessionRepository.java:329)
at com.iplanet.dpro.session.service.SessionService.saveForFailover(SessionService.java:3228)
at com.iplanet.dpro.session.service.InternalSession.updateForFailover(InternalSession.java:1548)
at com.iplanet.dpro.session.service.InternalSession.setLatestAccessTime(InternalSession.java:1256)
at com.iplanet.dpro.session.service.SessionService.getSessionInfo(SessionService.java:1229)
at com.iplanet.dpro.session.Session.doRefresh(Session.java:1450)
at com.iplanet.dpro.session.Session.access$300(Session.java:113)
at com.iplanet.dpro.session.Session$3.run(Session.java:1426)
at com.sun.identity.session.util.RestrictedTokenContext.doUsing(RestrictedTokenContext.java:86)
at com.iplanet.dpro.session.Session.refresh(Session.java:1423)
at com.iplanet.dpro.session.Session.getSession(Session.java:1092)
at com.iplanet.sso.providers.dpro.SSOProviderImpl.createSSOToken(SSOProviderImpl.java:92)
at com.iplanet.sso.SSOTokenManager.createSSOToken(SSOTokenManager.java:241)
at com.sun.identity.console.base.ConsoleServletBase.checkAuthentication(ConsoleServletBase.java:266)
at com.sun.identity.console.base.ConsoleServletBase.validateSSOToken(ConsoleServletBase.java:148)
at com.sun.identity.console.base.ConsoleServletBase.onBeforeRequest(ConsoleServletBase.java:112)
at com.iplanet.jato.ApplicationServletBase.fireBeforeRequestEvent(ApplicationServletBase.java:1105)
at com.iplanet.jato.ApplicationServletBase.processRequest(ApplicationServletBase.java:591)
at com.iplanet.jato.ApplicationServletBase.doGet(ApplicationServletBase.java:459)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)


:
:
:


amSession:04/16/2013 10:51:46:011 PM SGT: Thread[SystemTimer,5,main]
ERROR: Session failover service is not functional due to DB unavailability.
amSession:04/16/2013 10:51:46:011 PM SGT: Thread[SystemTimer,5,main]
Session database is not available at this moment.Please check with the system administrator for appropriate actions
com.sun.messaging.jms.JMSException: [C4003]: Error occurred on connection creation [am1.cdemo.sg:7676]. - cause: java.net.ConnectException: Connection refused
at com.sun.messaging.jmq.jmsclient.ExceptionHandler.throwConnectionException(ExceptionHandler.java:274)
at com.sun.messaging.jmq.jmsclient.ExceptionHandler.handleConnectException(ExceptionHandler.java:220)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.readBrokerPorts(PortMapperClient.java:241)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.init(PortMapperClient.java:150)
at com.sun.messaging.jmq.jmsclient.PortMapperClient.(PortMapperClient.java:92)
at com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPConnectionHandler.(TCPConnectionHandler.java:164)
at com.sun.messaging.jmq.jmsclient.protocol.tcp.TCPStreamHandler.openConnection(TCPStreamHandler.java:135)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnection(ConnectionInitiator.java:778)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnectionNew(ConnectionInitiator.java:254)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnection(ConnectionInitiator.java:208)
at com.sun.messaging.jmq.jmsclient.ConnectionInitiator.createConnection(ConnectionInitiator.java:158)
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.init(ProtocolHandler.java:816)
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.(ProtocolHandler.java:1529)
at com.sun.messaging.jmq.jmsclient.ConnectionImpl.openConnection(ConnectionImpl.java:2327)
at com.sun.messaging.jmq.jmsclient.ConnectionImpl.init(ConnectionImpl.java:1024)
at com.sun.messaging.jmq.jmsclient.ConnectionImpl.(ConnectionImpl.java:418)


.

No comments:

Post a Comment