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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ebxml-msg message

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


Subject: RE: FW: T2, Proposed solution for ... Re: SyncReply andReliableMessagingMethod in QualityOfServiceInfo


Thanks Chris, very good points.

<df>comments in-line</df>

Regards,

David Fischer
Drummond Group.

-----Original Message-----
From: Chris.Ferris@Sun.COM [mailto:Chris.Ferris@Sun.COM]
Sent: Thursday, September 20, 2001 11:50 AM
To: ebXML Msg
Subject: Re: FW: T2, Proposed solution for ... Re: SyncReply and
ReliableMessagingMethod in QualityOfServiceInfo


David Fischer wrote:
>
> As Chris pointed out, we need to carefully consider this.  So, I am sending
this
> out again (slightly modified -- retryCount goes in Via).  Does anyone see any
> problems with this or does anyone have an alternative proposal?
>
> Regards,
>
> David Fischer
> Drummond Group.
> ===============
> Proposal:
> A retryCount attribute on Via.  This parameter can only be set by the From
Party
> MSH and MUST start at zero.  The first retry, retryCount is set to one, etc.

How does this work if the sending MSH knows nothing of intermediaries?
Are you suggesting that the Via element is now REQUIRED on all messages?

<df>Yes, this is a problem, not only for retryCount but for all parameters in
Via.  I have asked this same question before, is Via always required?  If we are
doing RM at all, then Via is required in order to pass the ackRequested and
reliableMessagingMethod parameters.  I guess Via is REQUIRED for all RM
messages -- regardless of retryCount.
</df>

>
> Discussion:
> Duplicate detection, as always, is detected by the To Party and From Party
based
> upon MessageId.  Duplicate detection by the Intermediary is based upon
MessageId
> plus retryCount.

How does an intermediary distinguish itself as such? This seems to preclude
an MSH "module" that can be used anywhere as there is now a distinction between
how an intermediary MSH node treats idempotency checking versus how an endpoint
does so.

<df>The IM must know that it is an IM in order to forward rather than process
the payload.  If the IM is not the From Party or the To Party then it must be an
IM.  This is not quite true for a mailroom situation (need to work on this --
something like MTA routing tables?  or MX records?).
</df>

>
> For example (see attached flow chart):
>
> Let's say there are three intermediaries (nodes B, C, D).  A is the From and E
> is the To.  A sends a message with MessageId of 1 and retryCount of 0 (let's
> call this ID 1.0).  We will assume two failures occur during send -- the
message
> makes it to D but has problems sending to E.  The Ack from C also fails going
> back to B.  Since A did not get a DR within retryInterval, it decides* to
retry

retryInterval applies to the RM retry. You are now stating that the DR is the RM
artifact, not the Acknowledgment. What happens when no DR is requested/required?
Does the sending MSH wait for the response message?

<df>Chris, you are right, almost.  There is a CPA to the first IM and a CPA with
the end.  There is a retryInterval in each which corresponds to that interval.
However, what if the From Party does not know about any IMs?  I think it would
be wise for ends to always make retryInterval long and IMs to make retryInterval
short.  This is the kind of problem that will always exist with transparent IMs.
This would be part of the initial system tuning process -- implementation
detail.

	retryInterval(end) > sum(retryInterval(IM)*retries)

I am not saying DR is an RM artifact.  You objected previously so I am no longer
saying DR is part of RM.  I changed the automatic retry to "decides*" to
indicate that this happens by some unspecified means, not RM (read note at
bottom) and not necessarily by retryInterval -- implementation decision.
</df>

> using ID 1.1.  B will not see this as a duplicate and will pass it on.  B will
> also retry to C using ID 1.0.  C will see ID 1.0 as a duplicate so it will not
> send on but C will send an Ack back to B (who gets it).  C will also receive
ID
> 1.1 and send it on since it is not a duplicate.  Meanwhile D has finally made
> the send to E and the DR and Ack have come back from E.  D then receives ID
1.1
> from C and sends it on since it is not a duplicate.  E receives ID 1.1 but
since
> E is the end, it sees ID 1.0 and ID 1.1 as duplicates (it only uses
MessageId).
> E sends an Ack to D for ID 1.1.  E sees ID 1.1 as a duplicate so it does not
> pass on to its application but it does send another DR back to A.  A finally
> receives two DRs, one for ID 1.0 and another for ID 1.1.

So now A has to wait for the total possible number of DRs from E before it can
stop worrying about the message. Why is A allowed to retry before it has
any indication that there is a problem? The same retryInterval as might be
used between A and B doesn't seem realistic to be reused between A and E
as there may be a wide discrepancy between the expected response from B
and the expected response from E. E may be only intermittently connected
for any variety of reasons.

<df>A will stop worrying about the message when it gets a DR (if requested).
Why someone would retry is an implementation/user decision and probably not
automated.  We are leaving this decision criteria unspecified.
</df>

Thus, a separate parameter is needed to specify how long to wait for
a DR (which is still optional as far as I'm concerned) or possibly the
expected business response. As I understand, these are attributes that
are presently expressed in the BPSS (timeToAcknowledgeReceipt
and timeToPerform).

<df>Chris, we are leaving DR as optional and not part of RM -- at your request.
There probably does not need to be a separate parameter because this may not
be/probably won't be automated -- again at your request.   Would you prefer an
automated solution?
</df>

>
> *The retry on lack of DR may be either manual or automatic -- implementation
> dependant.
>
>   ----------------------------------------------------------------------------
------------------------
>               Name: RM9.jpg
>    RM9.jpg    Type: JPEG Image (image/jpeg)
>           Encoding: BASE64

----------------------------------------------------------------
To subscribe or unsubscribe from this elist use the subscription
manager: <http://lists.oasis-open.org/ob/adm.pl>



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


Powered by eList eXpress LLC