ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Vladimir Ozerov <voze...@gridgain.com>
Subject Re: Incorrect exception is thrown in async mode when partial update occurs.
Date Wed, 01 Jul 2015 13:53:15 GMT
Atri,

Tests passed. I merged the changes.

On Wed, Jul 1, 2015 at 1:30 PM, Atri Sharma <atri.jiit@gmail.com> wrote:

> 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