OTS 1.1 NO IDEA Avatar
  1. OMG Issue

OTS11 — OTS issue: explicit transaction propagation not clearly specified

  • Key: OTS11-14
  • Legacy Issue Number: 3365
  • Status: open  
  • Source: UBS ( Hans Kneubuehl)
  • Summary:

    There has now been some discussion on this subject, therefore I would like to
    have it registered as an official issue:

    issue:
    ------
    It is not clearly specified how the implicit transaction context associated
    with a thread is propagated to another execution environment (at the ORB level)
    in case of explicit transaction propagation control. It should be clarified in
    various places, for example, that the PropagationContxt is not required to be
    transferred in case of explicit transaction propagation.

    dicussion:
    ----------
    First, note the following two important aspects to transaction propagation:

    1. Transaction Propagation Control:
    How is it controlled at the application level whether a transaction is
    propagated? -> the spec specifies implicit and explicit propagation control.

    2. Transaction Context Propagation:
    How is the implicit transaction context propagated to another execution
    environement at the ORB level? -> implicit transfer of the PropagationContext
    versus explicit transfer of a Control objref (as an explicit request
    parameter).

    In principle, the spec could mandate that the PropagationContext is always
    transfered even when explicit transaction propagation control is used.
    Historically this was never intendend (see quoted message below). However,
    there are a lot of places where the spec speaks about implicit transfer of the
    PropagationContext without referring to implicit propagation control (Maybe
    because explicit propagation control was added at a later stage?):

    p. 10-60, "When the implicit context is transferred, it is represented as a
    PropagationContext."
    -> The historical intent is that in case of explicit propagation control, the
    implicit transaction context is transferred by passing the Control objref as an
    explicit request parameter. (Note that the implicit in 'implicit context' is
    referring to the fact that the OTS maintains implicitly transaction information
    with threads, its not referring to transferral. Also note that the 'implicit
    context' is referring to the transaction context, not the progagation context.)

    p. 10-60, "When the Control object is passed as an operation argument (explicit
    propagation), no special transfer mechanism is required."
    -> This could be interpreted (wrongly according to the historical intent) that
    no special transfer mechanism is required, implicit transferral of the
    PropagationContext is just fine.

    p. 10-61, "An interposed coordinator registers as a participant in the
    transaction with the Coordinator identified in the PropagationContext of the
    received request."
    -> but with explicit propagation it is not required that the received request
    contains a PropagationContext...

    p. 10-63, "When exporting a transaction, the ORB sets the PropagationContext
    into the ServiceContext::context_data field..."
    -> but this should only be required for implicit propagation control...

    p. 10-67, "The ORB will invoke the sender callbacks only when a transactional
    operation is issued for an object in a different process."
    -> What's the definition of a transactional operation? An operation on a
    transactional object? If yes, then this saying even in case of transactional
    objects that don't inherit TransactionalObject (ie. explicit propagation
    control), the ORB required to get the PropagationContext by using
    Sender::sending_request and to pass a PropagationContext to
    Sender::received_reply.

    ...

    Possible resolution:
    --------------------
    Several people have already suggested that explicit propagation is axed from
    the OTS.

  • Reported: OTS 1.0b1 — Mon, 28 Feb 2000 05:00 GMT
  • Updated: Fri, 6 Mar 2015 20:57 GMT