Subject: CE message

From: "Martin Stecher" <[email-masked]>
Date: Mon, 30 Jun 2003 17:18:38 +0200

Hi,

while implementing the OCP server prototype, I got two questions regarding the CE message:

0a. While TE has a result parameter, CE has not.
    Both have an optional error parameter.
    I know we had this discussion on the list but cannot really remember.
    Section 8.13: "error ... that cannot be expressed via result"
    What kind of error could that be?

0b. The syntax of "result" should be a struct  { uni [string] }.

Depending on 0a:
1. How about adding an optional, anonymous result parameter to CE?
   I use status codes and error strings for various errors that
   sometimes close a connection sometimes just the transaction.
   It's handy to keep both similar.

2. The CE messages implies closing of all open transactions.
   I would like to restrict this to happen only for the error case.
   Only if the processor wants to close the connection but does not
   expect to get any response for open transactions.
   If a transaction should close without error, a TE message must be sent.
   I am still fine that TE implies AME.
   Reasons:
      - In real environments one connection will handle many transactions.
      - No real benefit to skip the very last TE message(s). That would safe
        only a few messages out of hundreds.
      - If CE implies TE and TE implies AME and a connection has many concurrent
        transactions, a callout server needs to do a lot of cleanup if a
        connection closes:
          i) check error of CE whether a graceful close seems to be wanted
          ii) iterate over all open transactions
          iii) assume that all application messages are now done, force to
               finish all filtering and return data for all transactions.
          iv) when this is done for all transactions send CE and close.
        It will be easier if this procedure runs only per transaction.
    Are you o.k. with changing this?

Regards
Martin

---

From: Alex Rousskov <[email-masked]>
Date: Mon, 30 Jun 2003 10:15:48 -0600 (MDT)

>     What kind of error could that be?

I cannot think of a good example. An explicit error flag was added
because Oskar Batuner suggested that abnormal termination must be
distinguished from a normal (but possibly also erroneous) termination.
Oskar suggested a dedicated "xaction-abort" message or similar.
Somebody pointed out that the same semantics can be expressed via
special bit in a result code, but we may want to be explicit and have
an "error" flag.

We should make a decision how to express the "abnormal termination"
semantics.

> 0b. The syntax of "result" should be a struct { uni [string] }.

Yes, will document.

>    It's handy to keep both similar.

I agree. All *End messages should be similar. Will add.

>    I am still fine that TE implies AME.

This should be already the case, essentially. Perhaps we need to
polish documentation. AME means "I am done sending my data". AME does
not imply disinterest in the other side data. TE means "I am no longer
interested in this transaction". TE implies disinterest in other side
data for the same transaction. TE does not imply disinterest in other
transactions on the same connection. CE means "I am not longer
interested in anything on this connection and am going to close it".
CE does not imply disinterest in other connections.

Does this semantics meet your needs?

Thanks,

Alex.

-- 
                            | HTTP performance - Web Polygraph benchmark
www.measurement-factory.com | HTTP compliance+ - Co-Advisor test suite
                            | all of the above - PolyBox appliance