[ 
https://issues.apache.org/jira/browse/GEODE-4989?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bruce Schuchardt reassigned GEODE-4989:
---------------------------------------

    Assignee: Bruce Schuchardt

> CQ reply message fromData method deserializes query results
> -----------------------------------------------------------
>
>                 Key: GEODE-4989
>                 URL: https://issues.apache.org/jira/browse/GEODE-4989
>             Project: Geode
>          Issue Type: Bug
>          Components: serialization
>            Reporter: Bruce Schuchardt
>            Assignee: Bruce Schuchardt
>            Priority: Major
>
> Recent changes in DataSerializableFixedID serialization have left CQ reply 
> message handling in a bad state.  When results are read they are deserialized 
> into POJOs and this can cause queries to hang if the domain classes aren't 
> available in the server.  Even if they are it will hit performance because 
> the objects are completely deserialized and then have to be re-serialized to 
> be sent to clients.
> If the classes aren't available an exception like this will be thrown:
> {noformat}
> org.apache.geode.SerializationException: Could not create an instance of  
> org.apache.geode.distributed.internal.streaming.StreamingOperation$StreamingReplyMessage
>  .
>       at 
> org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2505)
>       at org.apache.geode.internal.DSFIDFactory.create(DSFIDFactory.java:994)
>       at 
> org.apache.geode.internal.InternalDataSerializer.readDSFID(InternalDataSerializer.java:2703)
>       at 
> org.apache.geode.internal.tcp.Connection.processNIOBuffer(Connection.java:3543)
>       at 
> org.apache.geode.internal.tcp.Connection.runNioReader(Connection.java:1827)
>       at org.apache.geode.internal.tcp.Connection.run(Connection.java:1688)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: org.apache.geode.SerializationException: Could not create an 
> instance of  org.apache.geode.cache.query.internal.CqEntry .
>       at 
> org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2505)
>       at org.apache.geode.internal.DSFIDFactory.create(DSFIDFactory.java:994)
>       at 
> org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2862)
>       at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2961)
>       at 
> org.apache.geode.internal.InternalDataSerializer.readUserObject(InternalDataSerializer.java:2817)
>       at 
> org.apache.geode.distributed.internal.streaming.StreamingOperation$StreamingReplyMessage.fromData(StreamingOperation.java:559)
>       at 
> org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2494)
>       ... 8 more
> Caused by: org.apache.geode.pdx.PdxSerializationException: Could not create 
> an instance of a class util.PdxVersionedQueryObject
>       at org.apache.geode.pdx.internal.PdxType.getPdxClass(PdxType.java:239)
>       at 
> org.apache.geode.pdx.internal.PdxReaderImpl.basicGetObject(PdxReaderImpl.java:687)
>       at 
> org.apache.geode.pdx.internal.PdxReaderImpl.getObject(PdxReaderImpl.java:682)
>       at 
> org.apache.geode.internal.InternalDataSerializer.readPdxSerializable(InternalDataSerializer.java:3226)
>       at 
> org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:3031)
>       at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2961)
>       at 
> org.apache.geode.cache.query.internal.CqEntry.fromData(CqEntry.java:95)
>       at 
> org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2494)
>       ... 14 more
> Caused by: java.lang.ClassNotFoundException: util.PdxVersionedQueryObject
>       at 
> org.apache.geode.internal.ClassPathLoader.forName(ClassPathLoader.java:170)
>       at 
> org.apache.geode.internal.InternalDataSerializer.getCachedClass(InternalDataSerializer.java:3870)
>       at org.apache.geode.pdx.internal.PdxType.getPdxClass(PdxType.java:235)
>       ... 21 more
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to