Let me know if this should be posted somewhere else.

JBoss 5.1.0
JBoss Cache 3.2.1
Three servers in cluster, HTTP Session replication, UDP, total replication, 
passivation enabled

We recently rolled out two changes to our system, HTTP Session passivation and 
an upgrade to JBoss Cache 3.2.1.  The changes were tested for several days 
under load on two other systems, but now that we've deployed to our primary 
data center we've run into an issue.

Things ran fine for about 22 hours, then server A and server B went into a loop 
where each server getting the following two stack traces repeatedly.  This 
happened twice in 24 hours.  We've not disabled session passivation and have 
not seen the issue.

In order to get the servers out of the loop we had to restart jboss on both 
servers (one of them twice).  JBoss was still responding but the cluster was in 
an obviously degraded state.

2009-10-20 15:40:29,709 ERROR 
[org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.AttributeBasedJBossCacheService]
 (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) IOException occurred 
unmarshalling value 
  | java.io.OptionalDataException
  |     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1349)
  |     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
  |     at javolution.util.FastMap.readObject(Unknown Source)
  |     at sun.reflect.GeneratedMethodAccessor362.invoke(Unknown Source)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:597)
  |     at 
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
  |     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
  |     at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
  |     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
  |     at 
java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
  |     at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
  |     at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
  |     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
  |     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
  |     at 
org.jboss.ha.framework.server.SimpleCachableMarshalledValue.get(SimpleCachableMarshalledValue.java:94)
  |     at 
org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.AbstractJBossCacheService.getUnMarshalledValue(AbstractJBossCacheService.java:660)
  |     at 
org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.AttributeBasedJBossCacheService.getSessionAttributes(AttributeBasedJBossCacheService.java:166)
  |     at 
org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.AbstractJBossCacheService.getDistributableSessionData(AbstractJBossCacheService.java:581)
  |     at 
org.jboss.web.tomcat.service.session.distributedcache.impl.jbc.AbstractJBossCacheService.getSessionData(AbstractJBossCacheService.java:364)
  |     at 
org.jboss.web.tomcat.service.session.JBossCacheManager.loadSession(JBossCacheManager.java:1832)
  |     at 
org.jboss.web.tomcat.service.session.JBossCacheManager.findSession(JBossCacheManager.java:489)
  |     at 
org.jboss.web.tomcat.service.session.JBossCacheManager.processExpirationPassivation(JBossCacheManager.java:1603)
  |     at 
org.jboss.web.tomcat.service.session.JBossManager.backgroundProcess(JBossManager.java:385)
  |     at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1327)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1612)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1601)
  |     at java.lang.Thread.run(Thread.java:619)
  | 
  | 2009-10-20 15:40:29,713 ERROR 
[org.jboss.web.tomcat.service.session.JBossCacheManager.] 
(ContainerBackgroundProcessor[StandardEngine[jboss.web]]) 
processExpirationPassivation(): failed handling unloaded session 
O-lgMwkUSLW1vVpTRQzExg__
  | java.lang.NullPointerException
  |     at 
java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:881)
  |     at 
java.util.concurrent.ConcurrentHashMap.putAll(ConcurrentHashMap.java:909)
  |     at 
org.jboss.web.tomcat.service.session.ClusteredSession.populateAttributes(ClusteredSession.java:1661)
  |     at 
org.jboss.web.tomcat.service.session.ClusteredSession.update(ClusteredSession.java:1120)
  |     at 
org.jboss.web.tomcat.service.session.JBossCacheManager.loadSession(JBossCacheManager.java:1835)
  |     at 
org.jboss.web.tomcat.service.session.JBossCacheManager.findSession(JBossCacheManager.java:489)
  |     at 
org.jboss.web.tomcat.service.session.JBossCacheManager.processExpirationPassivation(JBossCacheManager.java:1603)
  |     at 
org.jboss.web.tomcat.service.session.JBossManager.backgroundProcess(JBossManager.java:385)
  |     at 
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1327)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1612)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1621)
  |     at 
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1601)
  |     at java.lang.Thread.run(Thread.java:619)
  | 

It appears that both servers were trying to clean up the exact same "unloaded" 
session at the same time.  That might be normal, but something in the session 
data seemed to have gotten corrupted?  It's not clear yet, I'm currently 
looking at the JBossCacheManager code.

Relevant configs:
>From jboss-web.xml

  | <passivation-config>
  |     <use-session-passivation>true</use-session-passivation>
  |     <passivation-min-idle-time>-1</passivation-min-idle-time>
  |     <passivation-max-idle-time>300</passivation-max-idle-time>
  | </passivation-config>
  | 

>From jboss-cache-manager-jboss-beans.xml
<property name="cacheLoaderConfig">
  |             <bean class="org.jboss.cache.config.CacheLoaderConfig">
  |                    <!-- Do not change these -->
  |                    <property name="passivation">true</property>
  |                    <property name="shared">false</property>
  | 
  |                    <property name="individualCacheLoaderConfigs">
  |                      <list>
  |                         <bean 
class="org.jboss.cache.loader.FileCacheLoaderConfig">
  |                            <!-- Where passivated sessions are stored -->
  |                            <property 
name="location">${jboss.server.data.dir}${/}session</property>
  |                            <!-- Do not change these -->
  |                            <property name="async">false</property>
  |                            <property 
name="fetchPersistentState">true</property>
  |                            <property name="purgeOnStartup">true</property>
  |                            <property 
name="ignoreModifications">false</property>
  |                            <property 
name="checkCharacterPortability">false</property>
  |                         </bean>
  |                      </list>
  |                    </property>
  |             </bean>
  |          </property>
  | 


Has anyone seen this issue?  I see other people referencing 
java.io.OptinalDataException in the context of JBoss, but nothing that sounds 
like this exact same issue.   Any input would be greatly appreciated, we'd 
really like to get HTTP session passivation enabled again.



View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4261558#4261558

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4261558
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to