Dan Smith created GEODE-4116:
--------------------------------

             Summary: Can't get PDX objects using the new protocol
                 Key: GEODE-4116
                 URL: https://issues.apache.org/jira/browse/GEODE-4116
             Project: Geode
          Issue Type: Bug
          Components: client/server
            Reporter: Dan Smith


The new client protocol doesn't correctly support PDX objects. The 
GetRequestOperationHandler directly calls region.get, which will *deserialize* 
the value stored in the region. The operation handler is expecting to get a 
PdxInstance back, but that will only happen if the cache has read-serialized 
set to true.

I've attached a unit test that demonstrates this issue. If a region contains 
PDX objects and read-serialized is set to false (the default), the new protocol 
will throw exceptions if you try to get a value.

{noformat}
[error 2017/12/18 15:00:23.302 PST <ServerConnection on port 25194 Thread 0> 
tid=51] Received Get request with unsupported encoding: {}
org.apache.geode.internal.protocol.serialization.exception.UnsupportedEncodingTypeException:
 We cannot translate: class 
org.apache.geode.internal.protocol.protobuf.v1.acceptance.CacheOperationsJUnitTest$TestPdxObject
 into a specific Protobuf Encoding
        at 
org.apache.geode.internal.protocol.protobuf.v1.EncodingTypeTranslator.getEncodingTypeForObject(EncodingTypeTranslator.java:63)
        at 
org.apache.geode.internal.protocol.protobuf.v1.utilities.ProtobufUtilities.createEncodedValue(ProtobufUtilities.java:64)
        at 
org.apache.geode.internal.protocol.protobuf.v1.operations.GetRequestOperationHandler.process(GetRequestOperationHandler.java:66)
        at 
org.apache.geode.internal.protocol.protobuf.v1.operations.GetRequestOperationHandler.process(GetRequestOperationHandler.java:40)
        at 
org.apache.geode.internal.protocol.protobuf.v1.ProtobufOpsProcessor.processOperation(ProtobufOpsProcessor.java:83)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to