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

Blake Bender updated GEODE-6699:
--------------------------------
    Description: 
A Native Client customer reported a crash when running code like this (See 
GEODE-6624), and when the NC crash was fixed we discovered that the request 
timed out, rather than throwing an exception right away as expected.  What 
happens is more-or-less as follows:
 * start a locator and two servers
 * deploy a function to Geode that returns an instance of a class that the 
server can't deserialize because it doesn't have a default constructor
 * Run an app that uses the native client to execute the function on a region

Expected result:
 * Server returns a chunked message containing one value, with the type field 
set to DataSerializable and the subtype to 'Class', followed by the string name 
of the class and the buffer resulting from a call to toData on said instance
 * Native client reads the result and immediately throws a 
FunctionExecutionException

Actual result:
 * Server returns a chunked message containing one value, with the type field 
set to DataSerializable and the subtype to 'Class', followed by the string name 
of the class and the buffer resulting from a call to toData on said instance, 
BUT... the 'lastChunk' field of the reply is set to 0, i.e. this is not the 
last chunk
 * Native Client chunk processor sees that reply is not the last chunk, and 
asks the server for the next chunk
 * Server does not return any more chunks, and client request times out
 * Native Client throws NotConnectedException in response to the timed-out 
request

Repro steps:
 * Clone Native Client
 * In the file cppcache/integration/test/FunctionExecutionTest.cpp, test case 
FunctionReturnsObjectWhichCantBeDeserializedOnServer, change the type of 
exception asserted from NotConnectedException to DeserializationException
 * Build Native Client
 * Run the test case FunctionReturnsObjectWhichCantBeDeserializedOnServer in 
the FunctionExecutionTests suite

 

  was:
A Native Client customer reported a crash when running code like this (See 
GEODE-6624), and when the NC crash was fixed we discovered that the request 
timed out, rather than throwing an exception right away as expected.  What 
happens is more-or-less as follows:
 * start a locator and two servers
 * deploy a function to Geode that returns an instance of a class that the 
server can't deserialize because it doesn't have a default constructor
 * Run an app that uses the native client to execute the function on a region

Expected result:
 * Server returns a chunked message containing one value, with the type field 
set to DataSerializable and the subtype to 'Class', followed by the string name 
of the class and the buffer resulting from a call to toData on said instance
 * Native client reads the result and immediately throws a 
FunctionExecutionException

Actual result:
 * Server returns a chunked message containing one value, with the type field 
set to DataSerializable and the subtype to 'Class', followed by the string name 
of the class and the buffer resulting from a call to toData on said instance, 
BUT... the 'lastChunk' field of the reply is set to 0, i.e. this is not the 
last chunk
 * Native Client chunk processor sees that reply is not the last chunk, and 
asks the server for the next chunk
 * Server does not return any more chunks, and client request times out
 * Native Client throws NotConnectedException in response to the timed-out 
request

Repro steps:
 * Build Native Client
 * Run the test case FunctionReturnsObjectWhichCantBeDeserializedOnServer in 
the FunctionExecutionTests suite

 


> Server returns incorrect chunked response in the presence of an object it 
> can't deserializa
> -------------------------------------------------------------------------------------------
>
>                 Key: GEODE-6699
>                 URL: https://issues.apache.org/jira/browse/GEODE-6699
>             Project: Geode
>          Issue Type: Bug
>          Components: core
>            Reporter: Blake Bender
>            Priority: Major
>
> A Native Client customer reported a crash when running code like this (See 
> GEODE-6624), and when the NC crash was fixed we discovered that the request 
> timed out, rather than throwing an exception right away as expected.  What 
> happens is more-or-less as follows:
>  * start a locator and two servers
>  * deploy a function to Geode that returns an instance of a class that the 
> server can't deserialize because it doesn't have a default constructor
>  * Run an app that uses the native client to execute the function on a region
> Expected result:
>  * Server returns a chunked message containing one value, with the type field 
> set to DataSerializable and the subtype to 'Class', followed by the string 
> name of the class and the buffer resulting from a call to toData on said 
> instance
>  * Native client reads the result and immediately throws a 
> FunctionExecutionException
> Actual result:
>  * Server returns a chunked message containing one value, with the type field 
> set to DataSerializable and the subtype to 'Class', followed by the string 
> name of the class and the buffer resulting from a call to toData on said 
> instance, BUT... the 'lastChunk' field of the reply is set to 0, i.e. this is 
> not the last chunk
>  * Native Client chunk processor sees that reply is not the last chunk, and 
> asks the server for the next chunk
>  * Server does not return any more chunks, and client request times out
>  * Native Client throws NotConnectedException in response to the timed-out 
> request
> Repro steps:
>  * Clone Native Client
>  * In the file cppcache/integration/test/FunctionExecutionTest.cpp, test case 
> FunctionReturnsObjectWhichCantBeDeserializedOnServer, change the type of 
> exception asserted from NotConnectedException to DeserializationException
>  * Build Native Client
>  * Run the test case FunctionReturnsObjectWhichCantBeDeserializedOnServer in 
> the FunctionExecutionTests suite
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to