You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Jinmei Liao (JIRA)" <ji...@apache.org> on 2019/08/08 15:04:00 UTC

[jira] [Resolved] (GEODE-6956) ConfigurationResponse serialization exception

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

Jinmei Liao resolved GEODE-6956.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 1.11.0

> ConfigurationResponse serialization exception
> ---------------------------------------------
>
>                 Key: GEODE-6956
>                 URL: https://issues.apache.org/jira/browse/GEODE-6956
>             Project: Geode
>          Issue Type: Bug
>          Components: management
>            Reporter: Bruce Schuchardt
>            Priority: Major
>             Fix For: 1.11.0
>
>
> ConfigurationResponse is a DataSerializableFixedID that implements getSerializationVersions incorrectly.  If an older member happens to make a request that returns one of these objects it causes that member to hang waiting for a response.  The locator in my case had this:
> {noformat}
> [warn 2019/07/10 15:57:15.808 PDT <Function Execution Processor3> tid=0x3d] Error serializing message
> java.io.NotSerializableException: org.apache.geode.management.internal.configuration.messages.ConfigurationResponse
> at org.apache.geode.internal.cache.FunctionStreamingReplyMessage.toData(FunctionStreamingReplyMessage.java:115)
> at org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2305)
> at org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1497)
> at org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1469)
> at org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2072)
> at org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2943)
> at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger.serializeMessage(JGroupsMessenger.java:966)
> at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger.createJGMessage(JGroupsMessenger.java:870)
> at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger.send(JGroupsMessenger.java:775)
> at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger.send(JGroupsMessenger.java:662)
> at org.apache.geode.distributed.internal.membership.adapter.GMSMembershipManager.send(GMSMembershipManager.java:1783)
> at org.apache.geode.distributed.internal.ClusterDistributionManager.sendViaMembershipManager(ClusterDistributionManager.java:2852)
> at org.apache.geode.distributed.internal.ClusterDistributionManager.sendOutgoing(ClusterDistributionManager.java:2779)
> at org.apache.geode.distributed.internal.ClusterDistributionManager.sendMessage(ClusterDistributionManager.java:2816)
> at org.apache.geode.distributed.internal.ClusterDistributionManager.putOutgoing(ClusterDistributionManager.java:1526)
> at org.apache.geode.internal.cache.FunctionStreamingReplyMessage.send(FunctionStreamingReplyMessage.java:63)
> at org.apache.geode.internal.cache.MemberFunctionStreamingMessage.sendReply(MemberFunctionStreamingMessage.java:352)
> at org.apache.geode.internal.cache.MemberFunctionStreamingMessage.sendReplyForOneResult(MemberFunctionStreamingMessage.java:337)
> at org.apache.geode.internal.cache.execute.MemberFunctionResultSender.lastResult(MemberFunctionResultSender.java:100)
> at org.apache.geode.management.internal.configuration.functions.GetClusterConfigurationFunction.execute(GetClusterConfigurationFunction.java:54)
> at org.apache.geode.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:193)
> at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:375)
> at org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:439)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at org.apache.geode.distributed.internal.ClusterDistributionManager.runUntilShutdown(ClusterDistributionManager.java:964)
> at org.apache.geode.distributed.internal.ClusterDistributionManager.doFunctionExecutionThread(ClusterDistributionManager.java:818)
> at org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121)
> at java.lang.Thread.run(Thread.java:748)
> Caused by: org.apache.geode.ToDataException: class org.apache.geode.management.internal.configuration.messages.ConfigurationResponse
> at org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2336)
> at org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1497)
> at org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1469)
> at org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2072)
> at org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2943)
> at org.apache.geode.internal.cache.FunctionStreamingReplyMessage.toData(FunctionStreamingReplyMessage.java:109)
> ... 28 more
> Caused by: java.lang.NoSuchMethodException: org.apache.geode.management.internal.configuration.messages.ConfigurationResponse.toDataPre_GEODE_1_10_0_0(java.io.DataOutput)
> at java.lang.Class.getMethod(Class.java:1786)
> at org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2294)
> ... 33 more
> {noformat}
>  
> The fix for this is to remove Version.CURRENT from the list in getSerializationVersions.  This list should contain versions which contain on-wire format changes that require backward-compatibility "toData" and "fromData" methods.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)