[
https://issues.apache.org/jira/browse/IGNITE-7904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16422137#comment-16422137
]
Stanislav Lukyanov commented on IGNITE-7904:
--------------------------------------------
Summary of the changes:
- Changed IgniteUtils::cast not to trim exception chains as it used to.
GridClosureException is still unwrapped, but other exceptions aren't.
- Added test to check that IgniteCompute::execute and ::executeAsync always
throw the same exception as was thrown by the original code.
- Changed existing code to accommodate the new ::cast and ::execute behavior
-- Certain APIs that relied on getting specialized exceptions, such as
CacheException or IgfsException, from compute calls now attempt to find the
required exception down the chain themselves (instead of relying on compute to
unwrap it for them).
-- Certain tests that relied on getting a specific exception are changed to
search the exception chain (e.g. by changing GridTestUtils::assertThrows to
::assertThrowsAnyCause).
-- Certain exception messages now contain their cause' message; this is to
reduce compatibility impact of the new behavior when a code expects an
exception containing a specific message; e.g. it was observed that REST calls
return the top exception's message as an error description, so a REST client
might be relying on having the old text; adding cause' message helps to smooth
this a bit.
> ComputeTaskFuture.get() throws incorrect exception if ComputeTask.result()
> throws IgniteException
> -------------------------------------------------------------------------------------------------
>
> Key: IGNITE-7904
> URL: https://issues.apache.org/jira/browse/IGNITE-7904
> Project: Ignite
> Issue Type: Bug
> Reporter: Stanislav Lukyanov
> Assignee: Stanislav Lukyanov
> Priority: Major
>
> ComputeTask.result() javadoc says: "Throws: IgniteException - If handling a
> job result caused an error effectively rejecting a failover. This exception
> will be thrown out of ComputeTaskFuture.get() method."
> However, GridFutureAdapter calls IgniteUtils.cast(Throwable) on the exception
> before throwing it from get(), and the latter method trims the stack trace to
> the first occurence of an IgniteCheckedException. Because of that, get()
> throws not the IgniteException thrown from the ComputeTask.result() but one
> of its causes.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)