3 Replies Latest reply on Dec 7, 2009 5:39 AM by galder.zamarreno

    jboss clustering-fault tolerance errors

      Dear All,

      We have configured Jboss Clustering + Session Replication. But we are facing certain issues as below.

      Expected Scenario,
      User1 connects to node1 -> Login Successful -> User1 is working for Functionality X -> node1 down
      As node1 is down, node2 should take care for connected User1 from Functionality X.

      Actual Scenario/Query,
      When we shut down node1, Application logs out from Functionality X, then connects to node2 with Login Page of Application.


      Please find below configuration we used for your reference,
      Mod_JK


      JBOSS_HOME/server/all/deploy/jboss-web.deployer/server.xml




      server/all/deploy/jboss-web.deployer/META-INF/jboss-service.xml : UseJK = true


      Exception coming in logger .

      2009-11-17 13:05:50,369 INFO [org.jboss.web.tomcat.service.session.CacheListener] Possible concurrency problem: Replicated version id 1 matches in-memory version for session zs0jyaG4z-4sgTaEOIEvuA**
      2009-11-17 13:05:50,641 DEBUG [org.jboss.cache.interceptors.TxInterceptor] local transaction exists - registering global tx if not present for Thread[ajp-172.26.137.20-8009-1,5,jboss]
      2009-11-17 13:05:50,674 DEBUG [org.jboss.cache.interceptors.TxInterceptor] Running commit phase. One phase? false
      2009-11-17 13:05:50,674 DEBUG [org.jboss.cache.interceptors.TxInterceptor] Finished local commit/rollback method for GlobalTransaction:<172.26.137.20:56688>:1
      2009-11-17 13:05:50,674 DEBUG [org.jboss.cache.interceptors.TxInterceptor] Finished commit phase
      2009-11-17 13:05:50,674 DEBUG [org.jboss.web.tomcat.service.session.JBossCacheManager] loadSession(): id= zs0jyaG4z-4sgTaEOIEvuA**, session=SessionBasedClusteredSession[id: zs0jyaG4z-4sgTaEOIEvuA**.node2 lastAccessedTime: 1258463150496 version: 2 lastOutdated: 0]
      2009-11-17 13:05:50,674 DEBUG [org.jboss.web.tomcat.service.session.JvmRouteValve] checkJvmRoute(): check if need to re-route based on JvmRoute. Session id: zs0jyaG4z-4sgTaEOIEvuA**.node2 jvmRoute: node1
      2009-11-17 13:05:50,675 DEBUG [org.jboss.web.tomcat.service.session.JvmRouteValve] handleJvmRoute(): We have detected a failover with different jvmRoute. old one: node2 new one: node1. Will reset the session id.
      2009-11-17 13:05:50,675 DEBUG [org.jboss.web.tomcat.service.session.JvmRouteValve] resetSessionId(): changed catalina session to= [zs0jyaG4z-4sgTaEOIEvuA**.node1] old one= [zs0jyaG4z-4sgTaEOIEvuA**.node2]
      2009-11-17 13:05:50,675 DEBUG [org.jboss.web.tomcat.service.session.JBossCacheManager] Setting cookie with session id:zs0jyaG4z-4sgTaEOIEvuA**.node1 & name:JSESSIONID












      2009-11-17 13:44:29,185 DEBUG [org.jboss.web.tomcat.service.session.JvmRouteValve] checkJvmRoute(): check if need to re-route based on JvmRoute. Session id: Jp0uZF+NeeE4NdgdGeemcw**.node1 jvmRoute: node1
      2009-11-17 13:44:29,206 ERROR [org.jboss.web.tomcat.service.session.JBossCacheService] externalizeSession(): exception occurred externalizing session SessionBasedClusteredSession[id: Jp0uZF+NeeE4NdgdGeemcw**.node1 lastAccessedTime: 1258465468376 version: 49 lastOutdated: 0]
      java.io.NotSerializableException: com.icesoft.faces.component.datapaginator.DataPaginator
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
      at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
      at java.util.concurrent.ConcurrentHashMap.writeObject(ConcurrentHashMap.java:1380)
      at sun.reflect.GeneratedMethodAccessor316.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
      at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
      at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
      at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
      at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
      at org.jboss.web.tomcat.service.session.SessionBasedClusteredSession.writeExternal(SessionBasedClusteredSession.java:175)
      at org.jboss.web.tomcat.service.session.JBossCacheService.externalizeSession(JBossCacheService.java:1033)
      at org.jboss.web.tomcat.service.session.JBossCacheService.putSession(JBossCacheService.java:322)
      at org.jboss.web.tomcat.service.session.JBossCacheClusteredSession.processSessionRepl(JBossCacheClusteredSession.java:123)
      at org.jboss.web.tomcat.service.session.JBossCacheManager.processSessionRepl(JBossCacheManager.java:1127)
      at org.jboss.web.tomcat.service.session.JBossCacheManager.storeSession(JBossCacheManager.java:682)
      at org.jboss.web.tomcat.service.session.InstantSnapshotManager.snapshot(InstantSnapshotManager.java:49)
      at org.jboss.web.tomcat.service.session.ClusteredSessionValve.invoke(ClusteredSessionValve.java:108)
      at org.jboss.web.tomcat.service.session.JvmRouteValve.invoke(JvmRouteValve.java:84)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
      at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
      at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
      at java.lang.Thread.run(Thread.java:595)





      when session replication is happening, is it necessary to serialize all objects which have been stored in Session ?


      Thanks ,