memcached-session-manager icon indicating copy to clipboard operation
memcached-session-manager copied to clipboard

Error with XStream and Grails 3.0.17 - Cannot externalize org.grails.web.servlet.GrailsFlashScope

Open j4y opened this issue 8 years ago • 3 comments

We are using tomcat 7, Grails 3.0.17, and memcached-session-manager 2.0.0.

Any suggestions on how to move forward here? This works with tomcat 7, Grails 2.2.5 and memecache-session-manager 1.8.3

Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: 2016-10-04 12:10:55,528 WARN   XStreamTranscoder - Caught Exception decoding 2479 bytes of data
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: com.thoughtworks.xstream.converters.ConversionException: Cannot externalize class java.lang.Class : Expected 8192 bytes from stream, got 98
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: ---- Debugging information ----
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: message             : Cannot externalize class java.lang.Class
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: cause-exception     : java.io.StreamCorruptedException
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: cause-message       : Expected 8192 bytes from stream, got 98
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: class               : org.grails.buffer.StreamCharBuffer
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: required-type       : org.grails.buffer.StreamCharBuffer
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: converter-type      : com.thoughtworks.xstream.converters.reflection.ExternalizableConverter
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: path                : /concurrent-hash-map/entry/org.grails.web.servlet.GrailsFlashScope/next/entry/org.codehaus.groovy.runtime.GStringImpl/values/org.grails.buffer.StreamCharBuffer
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: line number         : 16
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: class[1]            : [Ljava.lang.Object;
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: converter-type[1]   : com.thoughtworks.xstream.converters.collections.ArrayConverter
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: class[2]            : org.codehaus.groovy.runtime.GStringImpl
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: converter-type[2]   : com.thoughtworks.xstream.converters.reflection.ReflectionConverter
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: class[3]            : java.util.concurrent.ConcurrentHashMap
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: converter-type[3]   : com.thoughtworks.xstream.converters.collections.MapConverter
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: class[4]            : org.grails.web.servlet.GrailsFlashScope
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: version             : 1.4.7
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: -------------------------------
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.ExternalizableConverter.unmarshal(ExternalizableConverter.java:162)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.ArrayConverter.unmarshal(ArrayConverter.java:55)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.putCurrentEntryIntoMap(MapConverter.java:110)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:98)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:92)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshallField(AbstractReflectionConverter.java:474)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doUnmarshal(AbstractReflectionConverter.java:406)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.unmarshal(AbstractReflectionConverter.java:257)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.AbstractCollectionConverter.readItem(AbstractCollectionConverter.java:71)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.putCurrentEntryIntoMap(MapConverter.java:110)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:98)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.populateMap(MapConverter.java:92)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.collections.MapConverter.unmarshal(MapConverter.java:87)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convert(TreeUnmarshaller.java:72)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractReferenceUnmarshaller.convert(AbstractReferenceUnmarshaller.java:65)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:66)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.convertAnother(TreeUnmarshaller.java:50)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:134)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1185)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1169)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1049)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.serializer.xstream.XStreamTranscoder.deserializeAttributes(XStreamTranscoder.java:96)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.TranscoderService.deserializeAttributes(TranscoderService.java:167)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.TranscoderService.deserialize(TranscoderService.java:124)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.MemcachedSessionService.loadFromMemcached(MemcachedSessionService.java:1147)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.MemcachedSessionService.findSession(MemcachedSessionService.java:597)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.MemcachedBackupSessionManager.findSession(MemcachedBackupSessionManager.java:218)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.connector.Request.doGetSession(Request.java:2913)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.connector.Request.getSessionInternal(Request.java:2531)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:426)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:124)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at de.javakaffee.web.msm.RequestTrackingHostValve.invoke(RequestTrackingHostValve.java:156)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at java.lang.Thread.run(Thread.java:745)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: Caused by: java.io.StreamCorruptedException: Expected 8192 bytes from stream, got 98
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.core.util.CustomObjectInputStream.read(CustomObjectInputStream.java:195)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at java.io.InputStreamReader.read(InputStreamReader.java:184)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at java.io.Reader.read(Reader.java:140)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at org.grails.buffer.StreamCharBuffer.readExternal(StreamCharBuffer.java:2727)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: at com.thoughtworks.xstream.converters.reflection.ExternalizableConverter.unmarshal(ExternalizableConverter.java:150)
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: ... 68 more
Oct 04 12:10:55 ip-172-16-3-118.ec2.internal server[3442]: 2016-10-04 12:10:55,534 [stdout] WARNING  de.javakaffee.web.msm.MemcachedSessionService loadFromMemcached Could not deserialize session with id 52D16D9DB4CD5C7F79CD4EC62E0DCFC8-n1 from memcached, session will be purged from storage.

j4y avatar Oct 04 '16 16:10 j4y

Configuration:

    <Manager
        className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:vpc.xrw0df.cfg.use1.cache.amazonaws.com:11211"
        sticky="false"
        sessionBackupAsync="false"
        sessionBackupTimeout="1000"
        lockingMode="all"
        transcoderFactoryClass="de.javakaffee.web.msm.serializer.xstream.XStreamTranscoderFactory"
    />

j4y avatar Oct 04 '16 16:10 j4y

You could try to use kryo transcoder and the GrailsFlashScopeRegistration.

magro avatar Oct 04 '16 20:10 magro

Is this still an issue? Otherwise I'd close it.

magro avatar Dec 28 '16 15:12 magro