[
https://issues.jboss.org/browse/WFLY-3352?page=com.atlassian.jira.plugin....
]
Paul Ferraro commented on WFLY-3352:
------------------------------------
[~swd847] Do you mean java.io.InvalidClassException?
There's a jira for this already (WFLY-3502). The intention is to let the user chose
between a number of strategies:
1. Propagate the deserialization exception (the current behavior)
2. Remove the problematic attribute
3. Invalidate the session
Strategy #2 won't work for distributed session using SESSION granularity, since all
attributes are serialized together. It probably makes sense to expose the strategy to the
SessionManager so the distributed implementation can handle this scenario efficiently.
Strategy #3 needs to proactively read all session attributes, so that an invalid session
can be seamlessly recreated (i.e. during a call to HttpServletRequest.getSession(true))
As a side note to [~papegaaij], we currently have 2 distinct mechanisms for persistent
sessions:
* persistent-sessions via undertow
* session passivation support via Infinispan
You seem to be using both, which doesn't make any sense.
Failure to restore persistent session triggers http 500 on all
requests
-----------------------------------------------------------------------
Key: WFLY-3352
URL:
https://issues.jboss.org/browse/WFLY-3352
Project: WildFly
Issue Type: Bug
Components: Clustering, Web (Undertow)
Affects Versions: 8.1.0.CR1, 9.0.0.Alpha1
Reporter: Emond Papegaaij
Assignee: Paul Ferraro
When persistent-sessions is enabled and an incompatible change in the class hierarchy
makes it impossible to restore a session after updating the application, the owner of the
session must clear his cookies to be able to use the application again. On an incoming
request, InfinispanSessionManager tries to reactivate the session, which fails with the
exception below. Rather than discarding the corrupted session and creating a new one, the
user is presented an http 500 error and is unable to continue. Only after removing the
JSESSIONID cookie is the user able to use the application.
This issue is related to WFLY-2729, which is about the way the problem is reported in the
logs. This issue is about how the user is affected.
{code}
08:09:11,430 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (default
task-56) ISPN000136: Execution error: org.infinispan.commons.CacheListenerException:
ISPN000280: Caught exception [java.lang.IllegalArgumentException] while invoking method
[public void
org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.activated(org.infinispan.notifications.cachelistener.event.CacheEntryActivatedEvent)]
on listener instance:
org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager@65ffd82d
at
org.infinispan.notifications.AbstractListenerImpl$ListenerInvocation$1.run(AbstractListenerImpl.java:211)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:22)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.notifications.AbstractListenerImpl$ListenerInvocation.invoke(AbstractListenerImpl.java:229)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.notifications.AbstractListenerImpl$ListenerInvocation.invoke(AbstractListenerImpl.java:192)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.notifications.cachelistener.CacheNotifierImpl.notifyCacheEntryActivated(CacheNotifierImpl.java:355)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.ActivationInterceptor.sendNotification(ActivationInterceptor.java:109)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.CacheLoaderInterceptor.recordLoadedEntry(CacheLoaderInterceptor.java:325)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:278)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.ActivationInterceptor.loadIfNeeded(ActivationInterceptor.java:86)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.CacheLoaderInterceptor.loadIfNeededAndUpdateStats(CacheLoaderInterceptor.java:335)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:105)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.EntryWrappingInterceptor.visitGetKeyValueCommand(EntryWrappingInterceptor.java:116)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitGetKeyValueCommand(PessimisticLockingInterceptor.java:72)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:112)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:74)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.TxInterceptor.enlistReadAndInvokeNext(TxInterceptor.java:226)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.TxInterceptor.visitGetKeyValueCommand(TxInterceptor.java:221)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:92)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:110)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:73)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:74)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.interceptors.BatchingInterceptor.handleDefault(BatchingInterceptor.java:79)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:74)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.infinispan.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:40)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:333)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at org.infinispan.CacheImpl.get(CacheImpl.java:377)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at org.infinispan.DecoratedCache.get(DecoratedCache.java:396)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at org.infinispan.AbstractDelegatingCache.get(AbstractDelegatingCache.java:271)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
at
org.jboss.as.clustering.infinispan.invoker.Locator$FindOperation.invoke(Locator.java:54)
at
org.jboss.as.clustering.infinispan.invoker.Locator$LockingFindOperation.invoke(Locator.java:71)
at
org.jboss.as.clustering.infinispan.invoker.SimpleCacheInvoker.invoke(SimpleCacheInvoker.java:34)
at
org.jboss.as.clustering.infinispan.invoker.RetryingCacheInvoker.invoke(RetryingCacheInvoker.java:82)
at
org.wildfly.clustering.web.infinispan.session.coarse.CoarseSessionFactory.findValue(CoarseSessionFactory.java:109)
at
org.wildfly.clustering.web.infinispan.session.coarse.CoarseSessionFactory.findValue(CoarseSessionFactory.java:55)
at
org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.findSession(InfinispanSessionManager.java:149)
at
org.wildfly.clustering.web.undertow.session.DistributableSessionManager.getSession(DistributableSessionManager.java:115)
at io.undertow.servlet.spec.ServletContextImpl.getSession(ServletContextImpl.java:677)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at
io.undertow.servlet.spec.HttpServletRequestImpl.getSession(HttpServletRequestImpl.java:353)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at org.jboss.weld.servlet.SessionHolder.requestInitialized(SessionHolder.java:47)
[weld-core-impl-2.1.2.Final.jar:2014-02-10 20:13]
at
org.jboss.weld.servlet.HttpContextLifecycle.requestInitialized(HttpContextLifecycle.java:168)
[weld-core-impl-2.1.2.Final.jar:2014-02-10 20:13]
at
org.jboss.weld.servlet.WeldInitialListener.requestInitialized(WeldInitialListener.java:153)
[weld-core-impl-2.1.2.Final.jar:2014-02-10 20:13]
at
io.undertow.servlet.core.ApplicationListeners.requestInitialized(ApplicationListeners.java:216)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:239)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at
io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
[undertow-servlet-1.0.10.Final.jar:1.0.10.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:168)
[undertow-core-1.0.10.Final.jar:1.0.10.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
[undertow-core-1.0.10.Final.jar:1.0.10.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_55]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_55]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_55]
Caused by: java.lang.IllegalArgumentException: java.io.InvalidClassException:
nl.topicus.eduario.web.pages.StudentHomePage$1; Class does not extend stream superclass
at
org.wildfly.clustering.web.infinispan.session.MarshalledValueSessionAttributeMarshaller.read(MarshalledValueSessionAttributeMarshaller.java:48)
at
org.wildfly.clustering.web.infinispan.session.MarshalledValueSessionAttributeMarshaller.read(MarshalledValueSessionAttributeMarshaller.java:33)
at
org.wildfly.clustering.web.infinispan.session.coarse.CoarseImmutableSessionAttributes.getAttributes(CoarseImmutableSessionAttributes.java:46)
at
org.wildfly.clustering.web.infinispan.session.coarse.CoarseImmutableSessionAttributes.getAttributeNames(CoarseImmutableSessionAttributes.java:51)
at
org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.findListeners(InfinispanSessionManager.java:320)
at
org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.triggerPostActivationEvents(InfinispanSessionManager.java:309)
at
org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.activated(InfinispanSessionManager.java:211)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_55]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_55]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_55]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_55]
at
org.infinispan.notifications.AbstractListenerImpl$ListenerInvocation$1.run(AbstractListenerImpl.java:207)
[infinispan-core-6.0.2.Final.jar:6.0.2.Final]
... 64 more
Caused by: java.io.InvalidClassException: nl.topicus.eduario.web.pages.StudentHomePage$1;
Class does not extend stream superclass
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:960)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1239)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at
org.jboss.marshalling.river.RiverUnmarshaller.readFields(RiverUnmarshaller.java:1712)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1628)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1269)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadCollectionObject(RiverUnmarshaller.java:180)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObjectArray(RiverUnmarshaller.java:1536)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadArray(RiverUnmarshaller.java:1575)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:326)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at
org.jboss.marshalling.river.RiverUnmarshaller.readFields(RiverUnmarshaller.java:1712)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1628)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1591)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1269)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadCollectionObject(RiverUnmarshaller.java:180)
at
org.jboss.marshalling.river.RiverUnmarshaller.readCollectionData(RiverUnmarshaller.java:773)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:649)
at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:149)
at org.jboss.marshalling.river.BlockUnmarshaller.readObject(BlockUnmarshaller.java:135)
at
org.jboss.marshalling.MarshallerObjectInputStream.readObjectOverride(MarshallerObjectInputStream.java:53)
at
org.jboss.marshalling.river.RiverObjectInputStream.readObjectOverride(RiverObjectInputStream.java:307)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:364) [rt.jar:1.7.0_55]
at
org.apache.wicket.page.PageStoreManager$SessionEntry.readObject(PageStoreManager.java:274)
[wicket-core-6.15.0.jar:6.15.0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_55]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[rt.jar:1.7.0_55]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[rt.jar:1.7.0_55]
at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_55]
at
org.jboss.marshalling.reflect.SerializableClass.callReadObject(SerializableClass.java:307)
at
org.jboss.marshalling.river.RiverUnmarshaller.doInitSerializable(RiverUnmarshaller.java:1608)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1269)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadMapObject(RiverUnmarshaller.java:195)
at
org.jboss.marshalling.river.RiverUnmarshaller.readMapData(RiverUnmarshaller.java:819)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:682)
at
org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:41)
at
org.jboss.as.clustering.marshalling.SimpleMarshalledValue.get(SimpleMarshalledValue.java:101)
at
org.jboss.as.clustering.marshalling.SimpleMarshalledValue.get(SimpleMarshalledValue.java:45)
at
org.wildfly.clustering.web.infinispan.session.MarshalledValueSessionAttributeMarshaller.read(MarshalledValueSessionAttributeMarshaller.java:46)
... 75 more
Caused by: an exception which occurred:
in field data
in object of type nl.topicus.eduario.web.pages.StudentHomePage$2
in element at index [6] of size [7]
in field children
in object of type nl.topicus.eduario.web.pages.StudentHomePage
in element at index [0] of size [1]
in object of type org.apache.wicket.page.PageStoreManager$SessionEntry
in map value at index [8] of size [11]
{code}
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)