[
https://issues.apache.org/jira/browse/GEODE-8501?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bruce J Schuchardt updated GEODE-8501:
--------------------------------------
Component/s: membership
> Thread waiting for a response hangs due to a deserialization error
> ------------------------------------------------------------------
>
> Key: GEODE-8501
> URL: https://issues.apache.org/jira/browse/GEODE-8501
> Project: Geode
> Issue Type: Improvement
> Components: membership, messaging
> Affects Versions: 1.14.0
> Reporter: Bruce J Schuchardt
> Priority: Major
>
> There was a failure that caused a hang due to a FetchEntryMessage reply
> failing to deserialize. This reply message had already deserialized its
> reply processor ID, so there's no reason that the waiting thread couldn't
> have been notified of the error so that it could wake up and process the
> problem.
>
> {noformat}
> [fatal 2020/09/16 14:04:59.318 PDT <P2P message reader for
> rs-GEM-3059-QQ1128-1a0i32xlarge-hydra-client-36(peergemfire_2_3_host1_14238:14238)<ec><v37>:41011(version:VersionOrdinal[ordinal=125])
> shared unordered uid=1 local port=50589 remote port=51132> tid=0x46] Error
> deserializing message[fatal 2020/09/16 14:04:59.318 PDT <P2P message reader
> for
> rs-GEM-3059-QQ1128-1a0i32xlarge-hydra-client-36(peergemfire_2_3_host1_14238:14238)<ec><v37>:41011(version:VersionOrdinal[ordinal=125])
> shared unordered uid=1 local port=50589 remote port=51132> tid=0x46] Error
> deserializing messagejava.io.IOException: Could not create an instance of
> org.apache.geode.internal.cache.partitioned.FetchEntryMessage$FetchEntryReplyMessage
> . at
> org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeFromData(DSFIDSerializerImpl.java:330)
> at
> org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.create(DSFIDSerializerImpl.java:368)
> at org.apache.geode.internal.DSFIDFactory.create(DSFIDFactory.java:1024) at
> org.apache.geode.internal.InternalDataSerializer.readDSFID(InternalDataSerializer.java:2387)
> at
> org.apache.geode.internal.InternalDataSerializer.readDSFID(InternalDataSerializer.java:2401)
> at
> org.apache.geode.internal.tcp.Connection.readMessage(Connection.java:2930) at
> org.apache.geode.internal.tcp.Connection.processInputBuffer(Connection.java:2751)
> at
> org.apache.geode.internal.tcp.Connection.readMessages(Connection.java:1619)
> at org.apache.geode.internal.tcp.Connection.run(Connection.java:1456) 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: java.io.IOException:
> Unknown header byte 109 at
> org.apache.geode.internal.serialization.DscodeHelper.toDSCODE(DscodeHelper.java:40)
> at
> org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2494)
> at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2864) at
> org.apache.geode.DataSerializer.readLinkedList(DataSerializer.java:2096) at
> org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2574)
> at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2864) at
> org.apache.geode.internal.cache.NonLocalRegionEntry.fromData(NonLocalRegionEntry.java:159)
> at
> org.apache.geode.internal.cache.EntrySnapshot.fromData(EntrySnapshot.java:282)
> at
> org.apache.geode.internal.cache.EntrySnapshot.<init>(EntrySnapshot.java:253)
> at
> org.apache.geode.internal.cache.partitioned.FetchEntryMessage$FetchEntryReplyMessage.fromData(FetchEntryMessage.java:309)
> at
> org.apache.geode.internal.serialization.internal.DSFIDSerializerImpl.invokeFromData(DSFIDSerializerImpl.java:317)
> ... 11 more {noformat}
> Deserialization code for cache operations in Connection.java already handles
> this sort of thing by using a thread local that is updated by the fromData
> method of each cache operation. ReplyMessage could do the same thing with a
> new thread local and Connection.java could check that thread local in the
> event of a deserialization error.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)