You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by Александр Меньшиков <sh...@gmail.com> on 2017/08/08 17:05:05 UTC

IGNITE-5994: IgniteInternalCache.invokeAsync().get() can return null

Hello, I found one small bug.

JIRA: https://issues.apache.org/jira/browse/IGNITE-5994

The problem is IgniteInternalCache.invokeAsync().get() will return null if
EntryProcessor return null. But the IgniteInternalCache.invoke() will
return EntryProcessorResult in the same situation (with null inside). It
can be optimization, and I guess we have to change invoke()'s result in
that case. Or it's a bug, and we have to change the result of invokeAsync().

If EntryProcessor returns not null everything is okay.

It doesn't relate with IgniteCache.invoke*.

Re: IGNITE-5994: IgniteInternalCache.invokeAsync().get() can return null

Posted by Yakov Zhdanov <yz...@apache.org>.
Replied in ticket. Also posting here.

Currently invokeAsync() is defined as public <T> IgniteFuture<T>
invokeAsync(.....).

If we need EntryProcessorResult to be returned from Future then it should
be public <T> IgniteFuture<EntryProcessorResult<T>> invokeAsync(.....). I
am not sure why we have this difference in sync/async counterpart.
Probably, Vladimir Ozerov
<https://issues.apache.org/jira/secure/ViewProfile.jspa?name=vozerov> or Taras
Ledkov
<https://issues.apache.org/jira/secure/ViewProfile.jspa?name=tledkov-gridgain>
can
provide some info.

I also think that we will not changing the public API in 2.0. Let's leave
it as is and then fix in next major version.

--Yakov

2017-08-08 20:05 GMT+03:00 Александр Меньшиков <sh...@gmail.com>:

> Hello, I found one small bug.
>
> JIRA: https://issues.apache.org/jira/browse/IGNITE-5994
>
> The problem is IgniteInternalCache.invokeAsync().get() will return null if
> EntryProcessor return null. But the IgniteInternalCache.invoke() will
> return EntryProcessorResult in the same situation (with null inside). It
> can be optimization, and I guess we have to change invoke()'s result in
> that case. Or it's a bug, and we have to change the result of
> invokeAsync().
>
> If EntryProcessor returns not null everything is okay.
>
> It doesn't relate with IgniteCache.invoke*.
>