You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Bruce Schuchardt (JIRA)" <ji...@apache.org> on 2018/04/04 16:48:00 UTC

[jira] [Resolved] (GEODE-4989) CQ reply message fromData method deserializes query results

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

Bruce Schuchardt resolved GEODE-4989.
-------------------------------------
       Resolution: Fixed
    Fix Version/s: 1.5.0

> 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
>              Labels: pull-request-available
>             Fix For: 1.5.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> 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)