OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-caf message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [ws-caf] ACTION for optimization of registration




Greg Pavlik wrote:

> I'm concerned that we're radically overgeneralizing the discussion.
>
> 1) Alastair, do you agree that we can deal with enlistment independent 
> of checking, ie, without implied graph completion semantics at the CF 
> level? If there's a consensus on that, I'd like us to move forward 
> there so we can close down that issue.

You know my opinion on this question.

>
> 2) Independent of 1), is there a general consensus that checking is 
> something that should be tackled independent of a particular protocol 
> semantic?

I think checking has its place and we COULD support it. However, all 
implementations I know of, and specifications, allow for it to be 
disabled (obviously that tends not to be the default out-of-the-box 
behaviour though).

>
> I have some concerns about this latter point. "Acid" systems do in 
> fact tend to conform to a set of historical constraints, eg 
> assumptions embedded in DTP. My main concern with the acid protocol is 
> that it provide a basis for interoperability with existing systems: I 
> do not think anyone will see it as a general mechanism for "web 
> transactions." From that perspective, I don't have a problem with a 
> simplistic checking solution that are consistent with how things have 
> been done in the past *for the acid protocol*, especially if its known 
> to work well with deployed tp technology.

+1

Mark.

>
> Greg
>
> Green, Alastair J. wrote:
>
>> I don't understand a number of Mark's arguments here.
>>
>>  
>>
>>>> (i) a WS-Context context that flows back on the response; none of our
>>>>     
>>>
>>
>>  
>>
>>>> specifications actually restrict context flows on "outbound" 
>>>> messages, since we're in a one-way domain, and this is conceptually 
>>>> appealing as it continues to tie together message exchanges within 
>>>> the same activity because the messages are all contextualised. Put it
>>>>     
>>>
>>
>>  
>>
>>>> another way: all one-way messages are contextualised and we are 
>>>> simply providing another specific element within the extension 
>>>> capability we already support, to address this. The precedent for 
>>>> this is the OTS and various commercial implementations.
>>>>     
>>>
>>
>> 1. A context that flows back on a response is not an OTS concept. There
>> is no such concept in OTS. This is a BTP concept, called "context
>> reply". In OTS there is assumed to be application message pairing,
>> equivalent to return of a function call in X/Open DTP's modelling
>> mindset. OTS wrongly applies the X/Open synchronous model to the
>> distributed checking problem.
>>
>> 2. OTS has a concept of "reply checking". This states that one must
>> count back the application responses that match each application
>> request. This is crude and excessive.
>> OTS states that checking in a distributed tree is tantamount to ensuring
>> that all transactional work of all leaf nodes has been completed.
>> In fact:
>> a) an application response may be the first or nth of a conversational
>> stream, and its arrival cannot be construed as equalling completion of
>> anything other than its role in the application's own protocol;
>> b) the danger of unchecked behaviour arises, not from attempting confirm
>> processing until all transaction work has been accomplished, but from
>> attempting confirmation before all participants are enrolled.
>> A one-way message-based transaction completion protocol can begin to
>> pass two-phase requests downtree long before all leaf node work is
>> completed. The key point is that, while a PREPARE downtree may stall
>> waiting for a PREPARED (wait for work to complete), we must not send
>> PREPARE to only some of the required participants. If we do then we risk
>> leaving them in a solitary state of preparedness (a state from which
>> they can never escape short of a brutal backstop timeout on their
>> attempts to retry obtaining a second-phase instruction). The terminator
>> application should be able to leave transaction completion to occur
>> without regard to its own lifecycle.
>>
>> 3. BTP correctly addresses these two problems a) and b). It introduces a
>> signal that means: "all enrolments stemming from an application message
>> have been processed". This signal is a BTP message CONTEXT-REPLY. It can
>> be sent independently of application responses or as part of an
>> application response message (as a header element). This signal
>> logically terminates the stream of 0..n ENROL signals that may arise as
>> a result of a service receiving an inbound CONTEXT message:
>>
>> CONTEXT
>> ENROL/ENROLLED
>> ENROL/ENROLLED ...
>> CONTEXT-REPLY
>>
>> This sequence could be thought of as the "checking sub protocol".
>>
>> (This is a simplification: the reply can be used to communicate failure
>> of required enrolments, and there can be a stream of context replies to
>> indicate to the app that it's in business, but that the protocol level
>> checking hasn't been completed.)
>>
>> 4. The point I have been trying to get across in the last week or so is
>> that the need satisfied by CONTEXT-REPLY is separate from the issue of
>> "boxcarring".
>> BTP has all kinds of (useful) network traffic optimizations. It can
>> concatenate any number of protocol messages together in a wrapper
>> element holding BTP messages ("bundling"). And it can also "group"
>> messages to create compound semantics (e.g. CONTEXT-REPLY & ENROL &
>> PREPARED).
>> Mark says:
>>
>>  
>>
>>>> (ii) a "boxcar" (a la BTP) of enlistment messages that accompany 
>>>> the one-way "response" message. The precedent for this is BTP.
>>>>
>>>> Now it seems to me that (ii) could be dealt with by the underlying 
>>>> SOAP infrastructure - that's always been the argument against putting
>>>>     
>>>
>>
>>  
>>
>>>> boxcarring into the protocol. Whereas (i) is a specific approach 
>>>> for a very specific problem.
>>>>     
>>>
>>
>> Mark then goes on to explain that his approach i) -- so sedulously
>> distinguished from BTP -- is in fact to have a bunch of enlistment
>> messages that accompany a one-way response message called ... a response
>> context, which sounds awfully like approach ii).
>>
>> Without vectorization we cannot group the context reply ("checked") with
>> the enlistments or registrations that must succeed to achieve the
>> checked state. The checked message has no magical power on its own to
>> achieve vectorization.
>>
>> 5. Mark is right to say there are two ways of achieving vectorization:
>> by relying on the infrastructure, and by doing it yourself. I have to
>> smile when I read that the SOAP infrastructure will do it for us. I have
>> been hearing this for four years. In what decade, and through which
>> well-known protocol nearing maturity within the WS architecture will
>> this occur?
>> In BTP we did three wise things as a TC on this kind of question --
>> refused to reference incomplete specs, defined all the facilities we
>> needed abstractly, and defined a "today's technology" binding that
>> concretely expressed them -- while defining how a "tomorrow's
>> technology" binding might be created when the time came. The abstract
>> EPR/WS-A issue. Are these WS-CAF specs to be capable of implementation
>> this or next year? If so then I suggest we need to define how boxcarring
>> is going to be done, or drop the attempt to support it altogether.
>> 6. Which brings me back to Mark's proposed text. Boxcarring is achieved
>> by stating that the context will contain enlistments as extension
>> elements. Mark comments:
>>
>>  
>>
>>> This all presupposes something along the lines of (i) above. [AG:
>>>   
>>
>> having a context reply by using an extended context]  
>>
>>> I'm going to continue to recommend that approach because I think
>>>   
>>
>> general  
>>
>>> boxcarring as outlined in (ii) [BTP boxcarring in a context reply] 
>>> is something that the runtime infrastructure will take care of. 
>>> However, that still leaves open the issue of what is meant by 
>>> "context" in the provided text. Is is a) a WS-Context as I original 
>>> indicated, or is it b) the specific addParticipant messages, i.e., a 
>>> very specific form of boxcarring for this very specific problem? As 
>>> I've already said, I prefer the conceptual model of contextualising 
>>> all of the one-way messages, so a)
>>>   
>>
>>
>>  
>>
>>> probably edges out b) for me, but at the moment I can't think of any 
>>> technical reasons for one over the other. I think how the 
>>> information is conveyed is less important than agreeing to convey 
>>> that information
>>>   
>>
>>
>>  
>>
>>> in the first place.
>>>   
>>
>>
>> I summarize this as:
>>
>> Approach i) [Nothing to do with OTS, original Mark proposed text]
>>
>> = have a context response and put a number of enlistment elements within
>> it.
>>
>> Approach ii) [BTP]
>> = put a number of enlistment elements within a wrapper, and then
>> optionally carry that freestanding or grouped with a context reply.
>>
>> Approach iii) [Mark musing on an alternative]
>>
>> = "have addParticipant (enlistments) messages in a vector".
>> On iii) How, where? As free-standing header elements (which implies they
>> must run alongside application messages (which is not required)? As
>> children of an element specifically for bundling WS-CAF protocol
>> messages -- exactly what <btp:messages/> does in BTP? This would allow
>> transmission alone or piggybacked as a header element on an app message.
>> This leads to a wrapper, and thence straight to approach ii), as in BTP.
>> I think it would be brain-bending to use the context itself as such a
>> wrapper, but someone might come up with that suggestion.
>>
>> [Incidentally I cannot see why one would restrain oneself from using the
>> technique in i) as a technique for *any* bundle of messages. And I also
>> cannot see why you would hold back from allowing a wrapper to contain
>> anything CAFish.]
>>
>> I simply do not understand what "contextualizing all the one-way
>> messages" has to do with this. The one-way messages of the application
>> must *all* be contextualized, even if they have no need? What if the
>> protocol semantics have nothing to do with app messages and are
>> out-of-band to the app? The one-way messages of the protocol(s) must all
>> be contextualized? What would that mean?  
>> 7. WS-CF and transactions: how do they interrelate in this area?
>>
>> Finally, to pull it all together -- WS-CF needs boxcarring to allow
>> vectorized tree-building or graph-painting. WS-TXM (and it won't just be
>> WS-Acid, which raises the need for a general TXM level protocol), needs
>> to have a way of saying "checked, enrolments done".
>> They may or may not be combined in a single message, but they are
>> semantically distinct.
>> If they are combined then they need a bucket to travel in together. An
>> augmented context can be used as the bucket. It needs to have an
>> extension element for checked that belongs to WS-TXM (and undefined
>> message in the current spec). It needs to be able to contain multiple
>> addParticipants for WS-CF.
>> But a context is not usually thought of as a body element, and it is
>> unclear why context is being used just as a bucket, aka a wrapper. And
>> it is unclear why the checked message should have to travel with an app
>> message, as a header etc. And it is unclear why addParticipants should
>> have to travel in something called a context to achieve multiple
>> registrations in one go.
>> This points to a WS-CAF bucket for multiple messages, that can be used
>> as a header element, as a body element, as an extension element of
>> context if need be etc. This is what BTP does. It works. It addresses
>> all use-cases.
>>
>> 8. Checking can also be achieved by counting of identified enrolled
>> inferiors. This can be dealt with separately, but it should not be
>> forgotten. It is a WS-TXM-general need, not specific to WS-Acid.
>> * * *
>>
>> This entire discussion begs the question: why are we trying to reinvent
>> the wheel of BTP in these areas? I venture to suggest that the same
>> unavoidable question will plague most other discussions as we proceed
>> with WS-TXM. This is exactly what I meant by "needless variation".
>> We would perhaps do ourselves and the wider audience a favour if we
>> frankly set out to copy BTP as faithfully and as literally as makes
>> sense given the layering of WS-Context and WS-CF. That way we would end
>> up with a workable and proven solution of equal power, in a short space
>> of time, on this issue, and on many others.
>> Alastair
>>
>>
>>
>> Alastair J. Green
>> CEO and CTO Choreology Ltd
>> 68 Lombard Street
>> London EC3V 9LJ
>> www.choreology.com
>>
>> +44 870 739 0050
>> +44 870 739 0051 (fax)
>> +44 795 841 2107 (mobile)
>>
>>
>> -----Original Message-----
>> From: Greg Pavlik [mailto:greg.pavlik@oracle.com] Sent: 19 July 2005 
>> 18:44
>> To: Mark Little
>> Cc: ws-caf
>> Subject: Re: [ws-caf] ACTION for optimization of registration
>>
>> Mark Little wrote:
>>
>>  
>>
>>> Conscious of the telecon today, I'd like to keep this rolling.
>>>
>>> I think the original issue of optimizing registration calls should 
>>> be orthogonal to checked transactions. As was discussed at the f2f, 
>>> this issue is only concerned with reducing the number of 
>>> cross-domain registration calls. With that in mind ...
>>>
>>>   
>>
>> yes, I agree. This has been the one problem point in the discussion 
>> so far. To clarify my early statement on WS-CF: I'm in favor of 
>> optimizing registration at that level but not in adding any 
>> additional semantic implications: my view is that CF  provides the 
>> building blocks for organizing the participant graph but nothing more.
>>
>>  
>>
>>>> Actually I think that we have two different ways of approaching the 
>>>> same problem.
>>>>
>>>>
>>>>
>>>> Pros and cons both ways.
>>>>     
>>>
>>> We have to make a choice. Fairly obviously, there's an implied (iii) 
>>> in the above, which is "do nothing", i.e., drop the issue. Assuming we
>>>   
>>
>>
>>  
>>
>>> don't want to go that route just yet (afterall, we're still in the 
>>> discussion phase), let's return to the original text which I had the 
>>> AI for generating:
>>>
>>> "A service that receives a transaction context on an application 
>>> request  SHOULD enlist participants with the corresponding activity 
>>> group. The transaction service implementation associated with the 
>>> service MAY decide to use the following protocol to optimize remote 
>>> registration invocations: this optimization MAY occur transparently to
>>>   
>>
>>
>>  
>>
>>> the service. Rather than register participants directly, the EPRs of 
>>> the participants (and the protocols they should be enlisted with) 
>>> are retained by the service-side transaction service component until 
>>> the response to the original invocation is sent; in which case a 
>>> context containing these EPRs and associated data is propagated back 
>>> with the response.
>>>
>>> If a receiver of a response obtains this context it MUST either be 
>>> able to perform the enlistment itself or, if it does not support 
>>> this optimization, send back a wsacid:CannotOptimizeEnlistment fault 
>>> code message and mark the transaction so that its only outcome is to 
>>> rollback. If enlistment fails then the transaction MUST be rolled 
>>> back; an implementation MAY retry transient registration failures.
>>>
>>> If the sender of the response receives an indication that there was 
>>> a non-recoverable failure (e.g., in delivery of the message or 
>>> registration of the participant EPRs) then it MUST rollback the work 
>>> it has performed in the scope of that transaction. When using this 
>>> optimization, the service MUST still see a wscf:participantAdded 
>>> message in order to be compliant with WS-CF. However, this message 
>>> SHOULD be generated by the service-side transaction component for this
>>>   
>>
>>
>>  
>>
>>> optimization to work."
>>>
>>>
>>> Mark.
>>>
>>>   
>>
>>
>>
>>  
>>
>

-- 
Mark Little
Chief Architect
Arjuna Technologies Ltd
(www.arjuna.com)



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]