ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Atri Sharma <atri.j...@gmail.com>
Subject Re: Incorrect exception is thrown in async mode when partial update occurs.
Date Wed, 01 Jul 2015 10:30:48 GMT
Vladimir,

Thanks for review of patch. Are we looking at committing this today, please?

Regards,

Atri

On Tue, Jun 30, 2015 at 9:42 PM, Atri Sharma <atri.jiit@gmail.com> wrote:

> Hi,
>
> I have uploaded patch for this.
>
> I am not sure about internal flow hence might be missing some part. Please
> advice if same.
>
> Please see and let me know your comments and feedback.
>
> Regards,
>
> Atri
>
> On Tue, Jun 30, 2015 at 3:18 PM, Vladimir Ozerov <vozerov@gridgain.com>
> wrote:
>
>> Atri,
>>
>> I would say that this problem is specific for all calls to
>> IgniteCacheProxy.setFuture() method. It looks like we can create an
>> extension for IgniteFutureImpl class (say, IgniteCacheFutureImpl) which
>> will use CU.convertToCacheException(e) to convert exceptions instead of
>> current U.convertException(e).
>>
>> Vladimir.
>>
>> On Tue, Jun 30, 2015 at 12:29 PM, Atri Sharma <atri.jiit@gmail.com>
>> wrote:
>>
>> > Vladimir,
>> >
>> > Is this problem specific to all checks of isAsync() calls?
>> >
>> > On Mon, Jun 29, 2015 at 6:29 PM, Vladimir Ozerov <vozerov@gridgain.com>
>> > wrote:
>> >
>> > > Atri,
>> > >
>> > > Currently allmost all exceptions occurring in Ignite kernal are
>> checked.
>> > > And if we want to expose them to users, we convert them to their
>> > unchecked
>> > > counterparts. The same goes for partial update exception: there is
>> > > CachePartialUpdateCheckedException
>> > > which is thrown in Ignite internals, and there is
>> > > CachePartialUpdateException
>> > > which is thrown to user. Conversion between there two excpetion types
>> > > occurs in the method GridCacheUtils.convertToCacheException.
>> > >
>> > > Obviously, we forgot to convert exceptions in async mode. As a result,
>> > > instead of throwing user exception, we throw IgniteException with
>> inner
>> > > CachePartialUpdateCheckedException. See how we process PUT ALL
>> > > operation in IgniteCacheProxy.putAll()
>> > > - we catch and convert exception in sync mode, but do not do that for
>> > async
>> > > future.
>> > >
>> > > It appears, that not only PUT ALL, but almost all other operations are
>> > > affected, so a kind of generic solutino is required here.
>> > >
>> > > Vladimir.
>> > >
>> > > On Mon, Jun 29, 2015 at 3:45 PM, Atri Sharma <atri.jiit@gmail.com>
>> > wrote:
>> > >
>> > > > I have taken the patch.
>> > > >
>> > > > Please advice on how to implement this. I will get the patch out
>> today
>> > > > since its critical.
>> > > >
>> > > > On Mon, Jun 29, 2015 at 6:05 PM, Vladimir Ozerov <
>> vozerov@gridgain.com
>> > >
>> > > > wrote:
>> > > >
>> > > > > Igniters,
>> > > > >
>> > > > > I noted that in async mode we throw IgniteException in case of
>> > partial
>> > > > > update, while CachePartialUpdateException is expected here
>> accoring
>> > to
>> > > > our
>> > > > > contract.
>> > > > >
>> > > > > This appears to be pretty critical as user cannot get failed
keys
>> > when
>> > > > > working in async mode. I created a ticket for that:
>> > > > > https://issues.apache.org/jira/browse/IGNITE-1059
>> > > > >
>> > > > > Can someone look at it?
>> > > > >
>> > > > > Vladimir.
>> > > > >
>> > > >
>> > > >
>> > > >
>> > > > --
>> > > > Regards,
>> > > >
>> > > > Atri
>> > > > *l'apprenant*
>> > > >
>> > >
>> >
>> >
>> >
>> > --
>> > Regards,
>> >
>> > Atri
>> > *l'apprenant*
>> >
>>
>
>
>
> --
> Regards,
>
> Atri
> *l'apprenant*
>



-- 
Regards,

Atri
*l'apprenant*

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message