[infinispan-dev] L1 consistency for transactional caches.

Pedro Ruivo pedro at infinispan.org
Tue Jul 2 14:51:36 EDT 2013



On 07/02/2013 04:55 PM, Dan Berindei wrote:
>
>
>
> On Tue, Jul 2, 2013 at 6:35 PM, Pedro Ruivo <pedro at infinispan.org
> <mailto:pedro at infinispan.org>> wrote:
>
>
>
>     On 07/02/2013 04:29 PM, Dan Berindei wrote:
>      >
>      >
>      >
>      > On Tue, Jul 2, 2013 at 5:59 PM, Pedro Ruivo <pedro at infinispan.org
>     <mailto:pedro at infinispan.org>
>      > <mailto:pedro at infinispan.org <mailto:pedro at infinispan.org>>> wrote:
>      >
>      >     Hi all,
>      >
>      >     simple question: What are the consistency guaranties that is
>     supposed to
>      >     be ensured?
>      >
>      >     I have the following scenario (happened in a test case):
>      >
>      >     NonOwner: remote get key
>      >     BackupOwner: receives the remote get and replies (with the
>     correct
>      >     value)
>      >     BackupOwner: put in L1 the value
>      >
>      >
>      > I assume you meant NonOwner here?
>
>     yes
>
>      >
>      >     PrimaryOwner: [at the same time] is committing a transaction
>     that will
>      >     update the key.
>      >     PrimaryOwer: receives the remote get after sending the
>     commit. The
>      >     invalidation for L1 is not sent to NonOwner.
>      >
>      >
>      > At some point, BackupOwner has to execute the commit as well, and it
>      > should send an InvalidateL1Command(key) to NonOwner. However, one
>     of the
>      > bugs that Will is working on could prevent that invalidation from
>      > working (maybe https://issues.jboss.org/browse/ISPN-2965).
>
>     only the primary owner is sending the invalidation command.
>
>
> Oops, you're right! And I'm pretty sure I made the same assumptions in
> my replies to Will's L1 thread...
>
> I guess we could make it work either sending the invalidations from all
> the owners (slowing down writes, because most of the time we'd send the
> same commands twice), or by sending remote get commands ONLY to the
> primary owner (which will slow down remote reads).
>
> Staggering remote GET commands won't work, because with staggering you
> still have the possibility of the first request reaching the primary
> owner only after the second request returned and the entry was written
> to L1.

This may be a stupid idea, but we only store the entry in L1 if it is a 
reply from the primary owner? Of course this will reduce the L1 hit 
ratio... :(

>
> Sending the invalidations from the tx originator after the commit might
> work as well, but only if L1.invalidationTreshold == 0 and all the L1
> invalidations are sent as multicasts.
>
>      >
>      >
>      >     The test finishes and I perform a check for the key value in
>     all the
>      >     caches. The NonOwner returns the L1 cached value (==test fail).
>      >
>      >     IMO, this is bug (or not) depending what guaranties we provide.
>      >
>      >     wdyt?
>      >
>      >
>      > It's a bug!
>      >
>      > IMO, at least in DIST_SYNC mode with sync commit, we should guarantee
>      > that stale entries are removed from non-owners before the TM.commit()
>      > call returns on the originator.
>      >
>      > With other configurations we probably can't guarantee that,
>     instead we
>      > should guarantee that stale entries are removed from non-owners
>     "soon"
>      > after the TM.commit() call returns on the originator.
>      >
>      > I don't think it's ok to say that a stale entry can stay in L1
>      > indefinitely in any configuration - otherwise why have L1
>     invalidation
>      > at all?
>      >
>      >
>      >
>      >
>      > _______________________________________________
>      > infinispan-dev mailing list
>      > infinispan-dev at lists.jboss.org
>     <mailto:infinispan-dev at lists.jboss.org>
>      > https://lists.jboss.org/mailman/listinfo/infinispan-dev
>      >
>     _______________________________________________
>     infinispan-dev mailing list
>     infinispan-dev at lists.jboss.org <mailto:infinispan-dev at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
>
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>


More information about the infinispan-dev mailing list