I agree for the need of transactions, and welcome the further conversation 
about how to accomplish it.

On 2024/08/02 11:08:10 Enrique Gonzalez Martinez wrote:
> Spawn a new conversation for that.
> 
> El vie, 2 ago 2024, 12:30, Francisco Javier Tirado Sarti <
> ftira...@redhat.com> escribió:
> 
> > Ok, I think we all agree we need some kind of transactional behaviour for
> > DB and events (on, in other words, guarantee that events are not lost).
> > Maybe I'm going too fast, but I would like to discuss which are the
> > possible approaches and prioritize them.
> > But, yes, we need to do that
> > Thanks for the clarification.
> >
> > On Fri, Aug 2, 2024 at 12:25 PM Enrique Gonzalez Martinez <
> > elguard...@gmail.com> wrote:
> >
> > > Hi francisco,
> > >
> > > Please go back to the proposal,  I am not setting any custom solutions
> > > just mention in the risk assessment that there are two possible ways
> > > to do this. one with transaction sync and another one with xa
> > > resource.
> > > debezium is ok but still requires transactions and that solution is
> > > based on xa resource as you are using a database to queue the event
> > > that will be sent through kafka.
> > >
> > > Hope it helps. This proposal is about adding transactions not about
> > > how to deal with all possible cases that will come from that. The risk
> > > assessment only identifies the problems and possible solutions.
> > >
> > > Cheers :)
> > >
> > > El vie, 2 ago 2024 a las 12:13, Francisco Javier Tirado Sarti
> > > (<ftira...@redhat.com>) escribió:
> > > >
> > > > Sorry to be a PITA and somehow diminish the apparent overall enthusiasm
> > > in
> > > > most of the community, but should we not discuss what we are going to
> > > > really do before voting?
> > > > If for transactions we mean XA transaction, I have to vote -1 till we
> > > > discuss other options.
> > > >
> > > > On Fri, Aug 2, 2024 at 12:05 PM Tibor Zimányi <tzima...@apache.org>
> > > wrote:
> > > >
> > > > > +1
> > > > >
> > > > > Dňa pi 2. 8. 2024, 12:02 Alex Porcelli <a...@porcelli.me>
> > napísal(a):
> > > > >
> > > > > > +1
> > > > > >
> > > > > > On Fri, Aug 2, 2024 at 4:09 AM Pere Fernandez (apache) <
> > > > > > pefer...@apache.org>
> > > > > > wrote:
> > > > > >
> > > > > > >  +1 to transactions!
> > > > > > >
> > > > > > > On Fri, 2 Aug 2024 at 08:39, Enrique Gonzalez Martinez <
> > > > > > > egonza...@apache.org>
> > > > > > > wrote:
> > > > > > >
> > > > > > > > * Transactions*
> > > > > > > > This document describes how to support transactions in the
> > > domain of
> > > > > > > > workflow engine and subsystems.
> > > > > > > >
> > > > > > > > The use cases for transactions in workflows is to enable
> > > consistency
> > > > > > > > during workflow executions.
> > > > > > > >
> > > > > > > > * Constraints *
> > > > > > > >
> > > > > > > > The constraints for this are related to different types of
> > > > > transaction
> > > > > > > > problems:
> > > > > > > >
> > > > > > > > Workflow transaction execution should be in one single
> > > transaction
> > > > > > > > (until idle elements are reached or there are no more elements
> > to
> > > > > > > > process)
> > > > > > > >
> > > > > > > > Process state should be consistent in storage in one single
> > > > > > > > transaction. In the case of database multiple tables should be
> > > > > written
> > > > > > > > in an atomic transaction
> > > > > > > >
> > > > > > > > Reactive code should be removed as it does not behave properly
> > > with
> > > > > > > > transactions.
> > > > > > > >
> > > > > > > > Transactions Policy among workflow runtime and subsystems
> > should
> > > be
> > > > > > > > consistent in terms of configuration (no subcomponent should
> > > start a
> > > > > > > > transaction if there is already one on the go, but they should
> > > > > mandate
> > > > > > > > to be in a transaction)
> > > > > > > >
> > > > > > > > Error handling should still produce an event that can be
> > stored.
> > > > > > > >
> > > > > > > > Subsystems execution should be included during transactions
> > > > > > > >
> > > > > > > > Async execution will spawn its own transaction.
> > > > > > > >
> > > > > > > > * Architecture *
> > > > > > > >
> > > > > > > > The architecture of the solution impacts some areas:
> > > > > > > >
> > > > > > > > Components with reactive that are involved in transaction
> > > refactor.
> > > > > So
> > > > > > > > far, the only subsystem using reactive code job service.
> > > > > > > >
> > > > > > > > Process Code generation should change in order to reflect the
> > > > > > > > transactions of the workflow engine
> > > > > > > >
> > > > > > > > Error handling should be modified in a way the error is
> > captured
> > > > > > > > outside the transaction and handled in a different one to avoid
> > > event
> > > > > > > > loss.
> > > > > > > >
> > > > > > > > Exchange information among runtime and subsystems should be in
> > a
> > > way
> > > > > > > > that those elements are involved in a transaction or they can
> > be
> > > > > > > > rolled back. At the moment the communication is being done
> > with a
> > > > > rest
> > > > > > > > call that is not part of the transaction and cannot be rolled
> > > back.
> > > > > > > >
> > > > > > > > Events produced within the transaction should be part of the
> > > > > > > > transaction as well to avoid phantom events (events producing
> > > during
> > > > > > > > workflow execution that are sent at the end of the unit of
> > work)
> > > > > > > >
> > > > > > > > * Risk Assessment *
> > > > > > > >
> > > > > > > > The risks identified for this work are the following:
> > > > > > > >
> > > > > > > > Error handling can be problematic depending where we set the
> > > > > > > > boundaries of the transaction. There are two different
> > > approaches:
> > > > > > > >
> > > > > > > > Boilerplate code for each task to start / commit / rollback the
> > > > > > > > transaction and deail with error in the rest call tier itself
> > > > > > > >
> > > > > > > > Use the runtime environment to install error handling for doing
> > > the
> > > > > > > > operation.
> > > > > > > >
> > > > > > > > Exchange information among systems in a non-transactional way.
> > > There
> > > > > > > > are a couple of approaches
> > > > > > > >
> > > > > > > > Install every time a transaction sync listener whenever the
> > rest
> > > call
> > > > > > > > is made against the subsystem and doing a compensation when it
> > > fails
> > > > > > > >
> > > > > > > > Wrap the rest call in a XAResource that can be enlisted in the
> > > > > > > transaction.
> > > > > > > >
> > > > > > > > The use of Kafka clients for stream that does not belong to the
> > > > > > > > transactions
> > > > > > > >
> > > > > > > > Wrap with XAResource (Kafka client support transactions, but
> > > does not
> > > > > > > > offer XAresource)
> > > > > > > >
> > > > > > > > Install a transaction sync for each transaction.
> > > > > > > >
> > > > > > > > Performance impact with transactions.
> > > > > > > >
> > > > > > > > Different transaction methods in quarkus and spring boot
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: dev-unsubscr...@kie.apache.org
> > > > > > > > For additional commands, e-mail: dev-h...@kie.apache.org
> > > > > > >
> > > > > >
> > > > >
> > >
> > >
> > >
> > > --
> > > Saludos, Enrique González Martínez :)
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscr...@kie.apache.org
> > > For additional commands, e-mail: dev-h...@kie.apache.org
> > >
> > >
> >
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@kie.apache.org
For additional commands, e-mail: dev-h...@kie.apache.org

Reply via email to