Dan Smith created GEODE-1762:
--------------------------------

             Summary: FunctionService throws exceptions from different places 
for clients and peers
                 Key: GEODE-1762
                 URL: https://issues.apache.org/jira/browse/GEODE-1762
             Project: Geode
          Issue Type: Bug
          Components: functions
            Reporter: Dan Smith


If a function throws an exception, the exception gets passed back to the caller 
from a different location if the function is executed from a client or a peer.

>From a peer, the exception is thrown from the result collector
>From 
>[FunctionServiceBase|https://github.com/apache/incubator-geode/blob/aca7b288f378ec05e00ec3a9277265d1a9679b4a/geode-core/src/test/java/com/gemstone/gemfire/internal/cache/execute/FunctionServiceBase.java]:
{code}
@Test()
  public void defaultCollectorThrowsExceptionAfterFunctionThrowsIllegalState() {
    final Host host = Host.getHost(0);

    ResultCollector rc = getExecution().execute((context) -> {throw new 
IllegalStateException();});
    //On a peer the exception is thrown from the rc.getResult call, below
    final Object result = rc.getResult();
  }
{code}

However, from a client executing the exact same code, the exception gets thrown 
from the Execution.execute() method instead.

{code}
@Test()
  public void defaultCollectorThrowsExceptionAfterFunctionThrowsIllegalState() {
    final Host host = Host.getHost(0);

    //On a client the exception is thrown from the execute call, below
    ResultCollector rc = getExecution().execute((context) -> {throw new 
IllegalStateException();});
  }
{code}

The exception handling should be consistent between clients and peers.



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

Reply via email to