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

Swapnil Bawaskar closed GEODE-1776.
-----------------------------------

> ExecuteRegionFunctionOp fails to read all data off the wire when an exception 
> is sent with sendResult
> -----------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-1776
>                 URL: https://issues.apache.org/jira/browse/GEODE-1776
>             Project: Geode
>          Issue Type: Bug
>          Components: functions
>            Reporter: Dan Smith
>            Assignee: Dan Smith
>             Fix For: 1.0.0-incubating
>
>
> Executing the below code on a client will result in the function service not 
> reading all of the data off the wire. The next message sent will receive 
> serialization errors.
> {code}
>     ResultCollector rc = getExecution().execute((context) -> {
>         context.getResultSender().sendResult(new FunctionException());
>         context.getResultSender().lastResult("done");
>     });
>     final Object result = rc.getResult();
> {code}
> It looks like what is happening is that inside 
> ExecuteRegionFunctionOp.processResponse, there is special handling to read 
> multiple chunks until all of the results are received. Unfortunately, certain 
> code paths like the one above with multiple results end up throwing an 
> exception instead of reading all of the chunks. 
> Here's the relevant bits of code:
> {code}
> // Read the chunk
> do {
>   //...
>   if (result instanceof FunctionException) {
>     //...
>     //This will end the loop without reading the remaining data
>     throw ex;
>   }
>   //...
> } while (!executeFunctionResponseMsg.isLastChunk());
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to