[
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)