Subject: Re: Issue: Atomicity, batching and config result message

From: "Khosravi, Hormuzd M" <[email-masked]>
Date: Sun, 19 Dec 2004 14:52:55 -0800

Jamal,

-----Original Message-----
From: Forwarding and Control Element Separation
[mailto:[email-masked]] On Behalf Of Jamal Hadi Salim

It seems to me the 3 modes can be selected from a global flag level
(we need two bits).
For default we can have mode 2. Does this sound reasonable?

So in summary:
Global flags, - 2 for selecting the 3 modes.
Global Types/commands: - 2 one for "DONE" and another one for "START"
DONE is also == UNLOCK, START == LOCK used only in 2pc like setup.

[HK] Yes this sounds reasonable to me. I assume by Global flags, you
mean Flags in the Main header? Then lets add the appropriate text to
that section. Another point would be that atomic transactions (mode 1)
can be performed in a single message, just using these flags, without
the need for the 2PC commands...this option should also be explicitly
mentioned.
Finally I have a similar comment as Joel regarding mode 3 (what Joel
called mode 4)...I haven't seen any use case of this in my experience. I
am fine with having it in, may be just add some text to describe a use
case for it?

In regards to Config response. It does seem to me to be a source of a
lot of noise if i have to send back the full message everytime. I should
be able to say "I want this config in all-or-none mode and just send me
a NACK with global reason when a failure happens". This has been
restricting how we batch in our implementation.

[HK] This is already possible....
Flags(32 bits):
  Identified so far:
  - ACK indicator(2 bit)
    The description for using the two bits is:
    'NoACK' (00)
    'SuccessACK'(01)
    'UnsuccessACK'(10)->> You can use this Flag in the main header for
that.
    'ACKAll' (11)

So I would consider this topic as resolved...the appropriate text needs
to be supplied to Avri.

Regards
Hormuzd

---

From: "Joel M. Halpern" <[email-masked]>
Date: Sun, 19 Dec 2004 18:43:09 -0500

This is an area where I have expressed disagreement in the past, and am 
still quite uncomfortable.
In general, it seems to me that every request should receive an application 
level response.  (Notifications over a reliable transport are a different 
matter.)

One can try to construct a case during a multi-request atomic transaction 
where one would want errors during the transaction, and a success at the end.
However, in order to perform 2 phase commit, one needs to actively know 
that the first phase has completed successfully.  The lack of a NACK does 
not constitute sufficient knowledge.
Hence, even in this case I would want individual acks.

Thus, I am left confused (as I was before) as to when a CE could usefully 
set this to anything other than AckAll.

Yours,
Joel M. Halpern