Don't worry, I just add you into the contributor group.  Now you can assign
the task yourself.


Willem Jiang

Blog: http://willemjiang.blogspot.com (English)
          http://jnn.iteye.com  (Chinese)
Twitter: willemjiang
Weibo: 姜宁willem

On Fri, Jan 12, 2018 at 9:56 PM, Zheng Feng <[email protected]> wrote:

> yeah, I raised https://issues.apache.org/jira/browse/SCB-228 for the issue
> of TxEvent type and feel free to assign to me. I think I have no access to
> assign myself as I am not the member of the servicecomb
>
> 2018-01-12 17:39 GMT+08:00 Willem Jiang <[email protected]>:
>
> > Hi FengZheng,
> >
> > It's good to see you here and we are looking forward your valuable inputs
> > and contribution :)
> >
> >
> > Willem Jiang
> >
> > Blog: http://willemjiang.blogspot.com (English)
> >           http://jnn.iteye.com  (Chinese)
> > Twitter: willemjiang
> > Weibo: 姜宁willem
> >
> > On Fri, Jan 12, 2018 at 3:38 PM, Zheng Feng <[email protected]> wrote:
> >
> > > comment inline,
> > >
> > > 2018-01-12 10:17 GMT+08:00 Sean Yin <[email protected]>:
> > >
> > > >  Hi Zheng,
> > > >
> > > > Thank you for taking your time to go through our Pack architecture of
> > > > ServiceComb Saga.
> > > >
> > > > 1. The Omega acts like a 'Saga Participant' and the Alpha looks like
> a
> > > > > 'Saga Coordinator'.
> > > > > 2. They communicate each other with the underlying gRPC
> connections.
> > > >
> > > >
> > > > You are right about the roles of Omega and Alpha in this
> architecture.
> > > And
> > > > the suggestions you provided are very valuable to us.
> > > >
> > > > 3. The TxEvent is defined as the sequences of the record, such like
> > > > > SagaStartedEvent, SagaEndedEvent, TxStartedEvent, TxEndedEvent,
> > > > > TxAbortedEvent, TxCompensatedEvent. And currently the event type is
> > > > relied
> > > > > by the TxEvent className. I think it would be better to use the
> enum
> > > type
> > > > > since the class name could be changed  with the issue of
> > compatibility.
> > > >
> > > >
> > > > We are in short of developers and cut some corners in our
> > implementation,
> > > > such as using TxEvent class names as event type. :)
> > > >
> > > OK,  I will raise a SCB jira for this if you agree.
> > >
> > > >
> > > > 4. The annotation SagaStart is used to indicate the boundary edge of
> > the
> > > > > Saga Transaction. I assume that we can use like the following
> > > > >     @SagaStart
> > > > >     public Response svc( ) {
> > > > >           restTemplate() -> invoke (serviceA);
> > > > >           retsTemplate() -> invoke (serviceB);
> > > > >     }
> > > >
> > > >
> > > > Yes, we have integration tests to illustrate this idea in pack-tests
> > > > module.
> > > >
> > > >     So I suggest that we use the @Saga or @SagaContext to replace the
> > > > > @SagaStart to make it clear. Also in the processor of this
> > annotation,
> > > > the
> > > > > SagaStartedEvent and SagaEndedEvent are sent.
> > > >
> > > >
> > > > Proper naming is hard and we can definitely give it more thoughts.
> > > Indeed,
> > > > we have code to send SagaStartedEvent and SagaEndedEvent around
> > > @SagaStart
> > > > in success scenario.
> > > > In failure cases, we try to achieve that Alpha writes SagaEndedEvent
> by
> > > > itself, since compensations are done asynchronously.
> > > >
> > > > 5. After going through the omega codes, I think it could be possible
> to
> > > > > introduce a OmegaClient interface to handle all of the events
> related
> > > > with
> > > > > the Saga. some pseudo code looks like
> > > > >     public interface OmegaClient {
> > > > >            void saga_start( );
> > > > >            void saga_close( );
> > > > >            void saga_cancel( );
> > > > >            void saga_tx_start( );
> > > > >            void saga_tx_end( );
> > > > >            void saga_tx_failed( );
> > > > >            void saga_compensate( );
> > > > >     }
> > > > >     So we can get the GrpcOmegaClient to implement it with the gRPC
> > > > > connection. This could be helpful if we have the other underlying
> > > > > connection in the future.
> > > >
> > > >
> > > > We do have a communication interface (MessageSender) for potential
> > > > extension in the future. And another interface
> (EventAwareInterceptor)
> > > for
> > > > composing these saga events.
> > > > Like you said, we probably should have given methods in
> > > > EventAwareInterceptor more meaningful names.
> > > >
> > > Can you point me the link for the EventAwareInterceptor ? I can not
> find
> > it
> > > in the incubator-servicecomb-saga.
> > >
> > > >
> > > > 6. I have not find any annotation with the participant. So it could
> be
> > > > > possible to introduce the @Participant just like
> > > > >    public class ServiceA {
> > > > >          @Participant
> > > > >           public Response work( );
> > > > >           @Compensate
> > > > >           public void undo( );
> > > > >    }
> > > >
> > > >
> > > > The annotation for partcipants is @Compensable.
> > > >
> > > >    and it could be useful to add the type SUPPORT, NOT_SUPPORT,
> > > MANDATORY,
> > > >
> > > >
> > > > I did not quite understand what you mean. Could you please elaborate
> a
> > > bit
> > > > more?
> > > >
> > > The idea is from the traditional transaction of EJB, you can find
> > > https://docs.oracle.com/javaee/6/tutorial/doc/bncij.html
> > >
> > > >
> > > > You have been working on data consistency problems for quite a while
> > and
> > > > must have many useful insights.
> > > > We are very lucky if you join us on this project!
> > > >
> > > > Thank you!
> > > >
> > > > Best Regards,
> > > > Sean
> > > >
> > > > On Fri, Jan 12, 2018 at 9:28 AM, Zheng Feng <[email protected]>
> wrote:
> > > >
> > > > > Hi all,
> > > > >
> > > > > I've tried to understand about the new architecture PACK of the
> > > > > servicecomb-saga.
> > > > >
> > > > > 1. The Omega acts like a 'Saga Participant' and the Alpha looks
> like
> > a
> > > > > 'Saga Coordinator'.
> > > > > 2. They communicate each other with the underlying gRPC
> connections.
> > > > > 3. The TxEvent is defined as the sequences of the record, such like
> > > > > SagaStartedEvent, SagaEndedEvent, TxStartedEvent, TxEndedEvent,
> > > > > TxAbortedEvent, TxCompensatedEvent. And currently the event type is
> > > > relied
> > > > > by the TxEvent className. I think it would be better to use the
> enum
> > > type
> > > > > since the class name could be changed  with the issue of
> > compatibility.
> > > > > 4. The annotation SagaStart is used to indicate the boundary edge
> of
> > > the
> > > > > Saga Transaction. I assume that we can use like the following
> > > > >     @SagaStart
> > > > >     public Response svc( ) {
> > > > >           restTemplate() -> invoke (serviceA);
> > > > >           retsTemplate() -> invoke (serviceB);
> > > > >     }
> > > > >     So I suggest that we use the @Saga or @SagaContext to replace
> the
> > > > > @SagaStart to make it clear. Also in the processor of this
> > annotation,
> > > > the
> > > > > SagaStartedEvent and SagaEndedEvent are sent.
> > > > >
> > > > > 5. After going through the omega codes, I think it could be
> possible
> > to
> > > > > introduce a OmegaClient interface to handle all of the events
> related
> > > > with
> > > > > the Saga. some pseudo code looks like
> > > > >     public interface OmegaClient {
> > > > >            void saga_start( );
> > > > >            void saga_close( );
> > > > >            void saga_cancel( );
> > > > >            void saga_tx_start( );
> > > > >            void saga_tx_end( );
> > > > >            void saga_tx_failed( );
> > > > >            void saga_compensate( );
> > > > >     }
> > > > >     So we can get the GrpcOmegaClient to implement it with the gRPC
> > > > > connection. This could be helpful if we have the other underlying
> > > > > connection in the future.
> > > > >
> > > > > 6. I have not find any annotation with the participant. So it could
> > be
> > > > > possible to introduce the @Participant just like
> > > > >
> > > > >    public class ServiceA {
> > > > >          @Participant
> > > > >           public Response work( );
> > > > >
> > > > >           @Compensate
> > > > >           public void undo( );
> > > > >    }
> > > > >    and it could be useful to add the type SUPPORT, NOT_SUPPORT,
> > > > MANDATORY,
> > > > > ...
> > > > >
> > > > > Anyway, I will be happy to involved in the servicecomb saga and
> > welcome
> > > > for
> > > > > any input.
> > > > >
> > > > > Thanks,
> > > > > Zheng
> > > > >
> > > >
> > >
> >
>

Reply via email to