[hibernate-dev] Hiberante OGM Infinispan Remote dialect - Execute the command queue as a single Infispan Remote Server Task

Fabio Massimo Ercoli fercoli at redhat.com
Mon Feb 5 10:05:20 EST 2018


Hi Radim,

thank you for the alternative, it is very interesting.
I've to study deeply the feature :P

Fabio


On Mon, Feb 5, 2018 at 9:53 AM, Radim Vansa <rvansa at redhat.com> wrote:

> Hi Fabio,
>
> thinking about the cons, Hot Rod can intelligently pick the server where
> should a given key reside, to reduce the number of hops (therefore,
> latency). RemoteCache does not expose any way to route according to some
> key; feel free to file a feature request in Infinispan JIRA.
>
> Note that in order to reduce the number of round-trips, Infinispan 9.2
> will support true-async operations: Previously the putAsync et all just
> moved the execution to different thread, since 9.2.0.CR2 it sends the
> request to the wire right await and the response is received through a
> CompletableFuture. At this moment multiple requests will need a distinct
> TCP connection for each concurrent operation, but this limitation is
> likely to be removed in 9.3. The goal is to let you write the batch down
> one-by-one using async API and just wait for all the operations to
> complete.
>
> I know this won't help for all the types of operation (a lack of
> client-side API sometimes forces OGM to use get() + CAS in a loop).
>
> I am not trying to talk you out of the remote execution API, just
> spreading news about the emerging alternatives.
>
> Radim
>
> On 02/02/2018 09:24 AM, Fabio Massimo Ercoli wrote:
> > I'm Fabio, nice to meet you.
> >
> > Speaking of the current implementation of the Infinispan remote dialect
> of
> > Hibernate OGM, working on issue OGM-1206 and talking with Davide I
> noticed
> > that the unit of work commands are executed (flushed to datastore) at the
> > end of the transaction itself.
> > In particular I noticed that the commands are stored in a transaction
> > scoped object of type org.hibernate.ogm.dialect.
> batch.spi.OperationsQueue.
> >
> > Instead of perfom one remote invocation for each command in the method
> >   org.hibernate.ogm.dialect.impl.BatchOperationsDelegator::executeBatch
> > maybe we could invoke a proper Infispan Remote Server Task to execute the
> > command queue on server side as a bulk operation.
> >
> > Moving the execution of the server-side command list (Infinispan) we
> would
> > have the advantage of reducing remote interactions. Moreover and above
> all
> > the execution of the command queue would be a transactional work unit, on
> > which could be apply a Repeteable Read isolation level, for instance.
> >
> > The solution would not solve the need for an XA client instead, but it
> > could be adopted by customers interested in local transactions.
> >
> > What do you think about it?
> > Can I open a Jira issue?
> >
> > Fabio
> >
>
> --
> Radim Vansa <rvansa at redhat.com>
> JBoss Performance Team
>
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>



-- 

FABIO MASSIMO ERCOLI

Senior Software Engineer - Hibernate & Data Platform

Red Hat <https://www.redhat.com/>

fabio.ercoli at redhat.com    M: (+39)-329.8681441
<http://redhatemailsignature-marketing.itos.redhat.com/>
<https://red.ht/sig>


More information about the hibernate-dev mailing list