OASIS Open Mailing List Archives  ·  All Lists  ·  ebxml-msg  ·  2001-09

ebxml-msg — archive

[Date Prev]  |  [Thread Prev]  |  [Thread Next]  |  [Date Next]   —  [Date Index]  |  [Thread Index]  |  [Month Index]  |  [List Home]

Re: T2 Retry with Delivery Receipt


David, Please see below. Cheers, Chris David Fischer wrote: > > Chris, your discussion is about RM and DR/NRR for RM. We agreed to take DR out > of the RM discussion. In your discussion you asked if this satisfied the > end-to-end retry need but you didn't discussion multi-hop at all? All your > examples were single hop (SMTP does not count as an IM and let's stay away from > translating gateways for now). Not at all. I gave 3 use cases, the third had a formal ebXML MSH intermediary node. I should point out that it was you who raised the EDI/INT gateway use case as a reason why you felt that end-to-end retries were a requirement. I was only building on that. > > My question about allowing the Sending Party to retry (manually or > automatically) has nothing to do with RM. The problem impacts RM > (deliverySemantics=OnceAndOnlyOnce) only in that the Receiving Party MUST > perform Idempotency. My contention is that the ability to retry is required any > time there is a delivery failure. I am not breaching the issue of automatic vs. > manual nor do I think we need to put that in the spec (in this we agree). Okay, this is clearer. If a DFN is returned, there are two possible meanings implied: - the message could not possibly have made it to the To Party - the message may have made it to the To Party, there is simply no proof (Ack) I think that the speification already covers the DFN adequately with the exception of Marty's suggested change (SHOULD to SHALL to ensure that a DFN is ALWAYS genereted). The DFN has an Error severity if it is known that the message could not possibly have reached its destination. The DFN has a severity of Warning if it MAY have reached its destination but was simply unacknowledged after exhausting all retries. A retry/resend of the identical message (same MessageId) above and beyond the RM-related retries can be accomodated when the DFN was generated locally (by the original sending MSH node) with a severity of either Error or Warning. It isn't clear to me that we have defined clearly enough the means by which the source of a DFN can be determined. It is also unclear as to whether an origin MSH that cannot communicate with the endpoint actually constructs an ebXML SOAP message, or whether it can simply throw an exception or notify the "application" layer in some manner other than the creation of an ebXML SOAP message that has an ErrorList with an Error element of DFN. This needs some clarification in any event. A resend of a new message (different MessageId) with the same payload can always be safely accomodated if the severity of the DFN (generated anywhere along the message path) was Error. We can, and possibly should state this clearly in the specification, without going to the extreme of actually specifying any required MSH behaviour w/r/t a resend/retry, thus leaving it to the layer of software "above" the level of the MSH. A DFN with a severity of Warning needs further investigation IMO. Clearly, we should not encourage that a new message (same payload) be sent if the DFN severity is Warning. We could, possibly in a non-normative section, describe how the Status inquiry service can be used to determine the status of the message w/r/t the To Party. If the message has indeed not been received, then it would seem to me to be a relatively safe course of action to send a new message with the same payload, assuming that this course of action is suitable for the "application"/message (e.g. it's business ttl is still viable). It should also be noted that the likelihood of this is fairly remote. > > I am not concerned with end-to-end RM here, except where duplicates are > concerned. This issue does not revolve around IMs being reliable or not or even > if they are true MSHs or not. This is end-to-end with a black box in the > middle. > > I define TRP failure as: > > 1. a DFN sent to the From Party MSH (error or warning) > 2. an Error Message sent to the From Party MSH > 3. the lack of a properly constructed Acknowledgement > Message (Ack/DR/NRR) upon request. > > There's probably something else but I can't think what right now. Let's take a > few example use cases. > > - Lack of DR (when requested) (3) If the DR is sent reliably, then its absense is significant cause for concern. > - If there is a network outage (1 or 3) I assume that you mean 3 (DR) if the DR is sent unreliably. If sent reliably, then a network partition would result in a DFN (1) with a severity of Error which, as I stated before, can be safely accomodated by resending the original, identical message. > - DFN from IM to From Party MSH (1 or 3) See above, if severity is Error, message can be safely sent as a new message with the same payload. We can say this, but it must be clearly stated that this functionality is outside the scope of the MSH proper, but of course can be implemented as an add-on. > - NRR validation failure (3) Seems to me that this use case needs further decomposition. Do you mean that the receiving MSH failed to validate the signature of the original received message, and is therefore reporting that it will not process the message? This seems to be a case of a (2) above. In that case, sending a new message with the same payload is safe because the To Party has indicated that it will not process the message. Of course, this case also requires further investigation/intervention. If the signature is based on a certificate that has expired, or which the To party doesn't recognize as valid, then more than a simple retry is in order. If the NRR validation failure is at the sending node, then it isn't clear to me that resending the message is in order at all. If the message was mangled in transit, then clearly, something needs to be done to ensure that it never happens again! A retry gets you nowhere when there is some manner of security violation. > - Lack of initial Ack (3) Already accomodated in the spec with the RM retry protocol. > - Security Failure (error on Signature or Encryption) (2) Send a new message with the same payload. See above regarding the fact that there are more than likely bigger problems involved. > - XML text corruption in transit (2) Unless you can verify that the message wasn't mangled to begin with, a retry does little to resolve the problem. In any event, sending a new message with the same payload is always safe in this circumstance because it is known that the To Party cannot and will not process the original message. > > Some of these might be automatic and some will require a fix prior to retry. > Lack of a DR is only one possible cause for a retry. In any of these cases, > there will be a retry of the same message (same MessageId) to prevent duplicates > which means Idempotency must be performed by the Receiving Party. If even one > of these is valid, then end-to-end retries needs to be allowed. See above, I don't think that there is need to do anything to support resending a message beyond what is already accomodated by the spec. > > Regards, > > David Fischer > Drummond Group. >

[Date Prev]  |  [Thread Prev]  |  [Thread Next]  |  [Date Next]   —  [Date Index]  |  [Thread Index]  |  [Month Index]  |  [List Home]