OASIS ebXML Messaging Services TC

 View Only

RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId

  • 1.  RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId

    Posted 12-06-2001 10:42
    
    Ralph,
    
    I hope you are right. I can offer one edge case, however, but it is only a
    Research prototype.
    
    When we did our BPF prototype (runtime for B2B using tpaML), we did an
    exercise with OBI.  We created a tpaML instance for OBI. However, OBI does
    not (or at least did not) have the concept of a conversationId in the
    header. So, we used the purchase order number to represent the unit of
    business.  The PO number is in payload as far as our middleware prototype
    was concerned, so at the middleware level, there appeared to be a single
    endless conversation.  Granted, we might have found a way to do this by
    introducing a concept of "no conversation".  In any case, that was what led
    me to suggest that there might be edge cases of legacy software that behave
    like a single never-ending conversation. I  hope that those edge cases
    never turn up but from the viewpoint of conversationId, it doesn't matter
    because a conversation can run longer than persistDuration and I am not
    sure that "infinitely long" would have to be handled any differently from
    "very long".
    
    Regards,
    Marty
    
    *************************************************************************************
    
    Martin W. Sachs
    IBM T. J. Watson Research Center
    P. O. B. 704
    Yorktown Hts, NY 10598
    914-784-7287;  IBM tie line 863-7287
    Notes address:  Martin W Sachs/Watson/IBM
    Internet address:  mwsachs @ us.ibm.com
    *************************************************************************************
    
    
    
    Ralph Berwanger <rberwanger@bTrade.com> on 12/06/2001 10:12:32 AM
    
    To:    ebxml-msg@lists.oasis-open.org
    cc:
    Subject:    RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    
    
    
    Marty,
     Speaking from the legacy community point-of-view, we have been
    discussing the fact that each EDI interchange (set of purchase orders)
    would be a unique conversation.  I cannot recall a single discussion
    where the concept of a never-ending conversation came up (except for a
    couple standards bodies but that is a different subject all together).
    That does not mean that you are not correct in the assumption, only that
    it appears contrary to my experience. Also, I said that I do not
    'recall' and that can provide some hints to my baseline.
    
    Ralph
    ASC X12, Vice Chair
    
    -----Original Message-----
    From: Martin W Sachs [mailto:mwsachs@us.ibm.com]
    Sent: Thursday, December 06, 2001 9:05 AM
    To: David Fischer
    Cc: Christopher Ferris; Dan Weinreb; ebxml-msg@lists.oasis-open.org
    Subject: RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    
    
    
    David,
    
    See comments below, MWS:
    
    Regards,
    Marty
    
    ************************************************************************
    *************
    
    Martin W. Sachs
    IBM T. J. Watson Research Center
    P. O. B. 704
    Yorktown Hts, NY 10598
    914-784-7287;  IBM tie line 863-7287
    Notes address:  Martin W Sachs/Watson/IBM
    Internet address:  mwsachs @ us.ibm.com
    ************************************************************************
    *************
    
    
    
    David Fischer <david@drummondgroup.com> on 12/05/2001 03:14:44 PM
    
    To:    Martin W Sachs/Watson/IBM@IBMUS
    cc:    Christopher Ferris <chris.ferris@sun.com>, Dan Weinreb
           <dlw@exceloncorp.com>, ebxml-msg@lists.oasis-open.org
    Subject:    RE: [ebxml-msg] Re: Comments on the 1.09 about
    ConversationId
    
    
    
    Marty,
    
    I was suggesting first that we might not need messageOrderSemantics and
    we
    could
    do away with this attribute.
    
    I was suggesting second, that it is not particularly useful to tie
    MessageOrder
    to ConversationId.  I did not mean to imply that MessageOrder would be
    outside
    the confines of a Conversation.  We have no means of ending a
    Conversation
    and I
    suspect it will be common for Conversations to never end (why should
    they?).
    
    MWS:  Someone else expressed the view that conversations will always
    end.
    In my mind,
    applications that are conversation-based will naturally equate a
    conversation with
    one unit of business (e.g. one purchase) and so, conversations will
    always
    end. I
    suspect that there will be edge cases of legacy software that is not
    ebXML-aware that
    does its own conversation mangement based on information in the payload
    (e.g purchase
    order number).  The MSH might see that as a single never-ending
    conversation.
    
    MWS:  You have to have a means of ending a conversation. You don't
    actually
    end it.
    The application does that but you have to be notified that the
    conversation
    is ended
    precisely so you can purge obsolete stuff from the persistent store.
    Two
    approaches
    have already been suggested on this list:
    
       1. Software at each party notifies its MSH
       2. Software on the side the sends the last message notifies its MSH
    and
       the
       message header contains a flag that notifies the To MSH.
    
    We
    do not specify that a ConversationId must be kept in storage anywhere in
    the
    spec.
    
    MWS:  No but since you can (and usually have to) use the convesationId
    for
    routing,
    there is an implication that you keep information around that enables
    that
    routing
    to be done.
    Since there is only a single conversationId, one or both parties has to
    do
    mapping,
    which requires some mapping issue to be kept in the persistent store
    with
    the
    conversationId.
    There is an alternative which the team rejected at least once:  The
    conversationId
    contains a piece that each party supplies (on the first message
    exchange)
    and that
    piece is the actual routing information about the conversation. Since
    the
    actual
    routing information, rather than a label, is in the message header, the
    MSH
    does
    not have to keep the conversationId and mapping information int he
    persistent store.
    
    I am looking for another way -- say a new set of ordered messages could
    include
    the start number so the Receiving MSH does not have to keep messages
    past
    persistDuration?
    
    MWS: I think that it has already been pointed out that the whole
    last-ordered message
    does not have to be saved in its entirety until the next in-order
    message
    arrives; only the
    conversationId, last ordered sequence number, and a few other header
    things
    have to
    be saved.
    
    I don't know the solution but I think MessageOrder is broken.
    IMO, keeping information in persistent store forever is not the right
    answer,
    
    MWS: Again, mostly not forever since most conversations end.
    
    but I will go with that if it will get us past this problem.
    
    David.
    
    -----Original Message-----
    From: Martin W Sachs [mailto:mwsachs@us.ibm.com]
    Sent: Wednesday, December 05, 2001 10:21 AM
    To: David Fischer
    Cc: Christopher Ferris; Dan Weinreb; ebxml-msg@lists.oasis-open.org
    Subject: RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    
    
    
    Some comments below, MWS:
    
    Regards,
    Marty
    
    ************************************************************************
    ********
    
    *****
    
    Martin W. Sachs
    IBM T. J. Watson Research Center
    P. O. B. 704
    Yorktown Hts, NY 10598
    914-784-7287;  IBM tie line 863-7287
    Notes address:  Martin W Sachs/Watson/IBM
    Internet address:  mwsachs @ us.ibm.com
    ************************************************************************
    ********
    
    *****
    
    
    
    David Fischer <david@drummondgroup.com> on 12/05/2001 09:59:17 AM
    
    To:    Martin W Sachs/Watson/IBM@IBMUS, Christopher Ferris
           <chris.ferris@sun.com>
    cc:    Dan Weinreb <dlw@exceloncorp.com>, ebxml-msg@lists.oasis-open.org
    Subject:    RE: [ebxml-msg] Re: Comments on the 1.09 about
    ConversationId
    
    
    
    Shimamura-san's modification of Marty's words (edited version):
    
       When messageOrderSemantics is set to "Guaranteed", the Receiving MSH
       shall preserve in persistent storage all required SOAP Header
       information, including SequenceNumber, needed to keep the
       Message Order semantics of the last message in the conversation
       sent in order to the application until either a subsequent
       in-order message arrives or until the conversation ends
       (no matter how long the conversation exists).
    
       The Receiving MSH shall preserve in persistent storage the
       ConversationId of an in-progress conversation until that conversation
       ends (no matter how long the conversation exists).
    
    MWS:  I still think that a non-normative reminder is needed that these
    holding
    times might exceed the value of persistDuration
    
    Does this meet everyone's requirements?  I think we will get some flack
    since
    this guarantees slow accumulation of old ConversationIds in persistent
    Storage.
    
    MWS:  You can't avoid accumulating old conversationIds since a
    conversation
    can last a long time.  The conversationIds will eventually be purged as
    each
    conversation ends.  A never-ending conversation will only contribute one
    conversationId, so it shouldn't be a big deal.
    
    In the second paragraph, do we need to say Conversations with
    messageOrderSemantics set to "Guaranteed"?
    
    Do we need messageOrderSemantics?  If MessageOrder is present, why would
    messageOrderSemantics ever be "NotGuaranteed"?  The problem is
    MessageOrder
    tied
    to ConversationId.  MessageOrder is a very time limited situation while
    ConversationId can be unlimited -- not a good match.
    
    MWS: As long as the sequencing is within a conversation, that's the way
    it
    is.
    If you try to do message ordering over the entire stream, you need
    sequence
    numbers across the entire stream and you are spinning your wheels
    ordering
    message that have no functional time relationship to each other.
    
    Regards,
    
    David.
    -----Original Message-----
    From: Martin W Sachs [mailto:mwsachs@us.ibm.com]
    Sent: Wednesday, December 05, 2001 8:08 AM
    To: Christopher Ferris
    Cc: David Fischer; Dan Weinreb; ebxml-msg@lists.oasis-open.org
    Subject: Re: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    
    
    
    You need to say enough in the MSG spec to inform an implementer that
    persistDuration follows different rules for conversationId and
    last-ordered-message than for reliable messaging.  Considering the
    amount
    of discussion we have had on this point, we cannot assume that a
    "reasonable implementer" will know what to do. There are plenty of
    examples
    in the newspapers about deadly mistakes made by reasonable implementers.
    The Risks Forum mut be full of them.
    
    Regards,
    Marty
    
    ************************************************************************
    ********
    
    
    *****
    
    Martin W. Sachs
    IBM T. J. Watson Research Center
    P. O. B. 704
    Yorktown Hts, NY 10598
    914-784-7287;  IBM tie line 863-7287
    Notes address:  Martin W Sachs/Watson/IBM
    Internet address:  mwsachs @ us.ibm.com
    ************************************************************************
    ********
    
    
    *****
    
    
    
    Christopher Ferris <chris.ferris@sun.com> on 12/04/2001 09:39:42 PM
    
    To:    David Fischer <david@drummondgroup.com>
    cc:    Martin W Sachs/Watson/IBM@IBMUS, Dan Weinreb
    <dlw@exceloncorp.com>,
           ebxml-msg@lists.oasis-open.org
    Subject:    Re: [ebxml-msg] Re: Comments on the 1.09 about
    ConversationId
    
    
    
    The thing I have trouble with here is why we have to say anything
    in the spec. This is too suggestive of implementation detail
    IMO (although probably accurate). Why do we need to say anything
    about this at all?
    
    Cheers,
    
    Chris
    
    David Fischer wrote:
    
    > OK, I think that will work, but it is not the whole message which
    needs
    to be
    > saved.  Once the message is delivered to the application, just the
    MessageId,
    > CPAId, persistDuration, ConversationId, SequenceNumber (did I get
    everything?)
    > need to be saved.  The spec says now only the MessageId needs to be
    saved
    but
    > that's not enough for MessageOrder.
    >
    > David.
    >
    > -----Original Message-----
    > From: Martin W Sachs [mailto:mwsachs@us.ibm.com]
    > Sent: Tuesday, December 04, 2001 5:01 PM
    > To: Christopher Ferris
    > Cc: David Fischer; Dan Weinreb; ebxml-msg@lists.oasis-open.org;
    > ebxml-cppa@lists.oasis-open.org
    > Subject: Re: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    >
    >
    >
    > Then it should only be necessary to add to the MSG spec words that
    say:
    >
    >    The MSH shall preserve in persistent storage the last message in
    the
    >    conversation that was sent in order to the application until either
    a
    >    subseqent in-order message arrives or until the conversation ends
    >    (regardless of how long that takes). These words probably should be
    >    modified if preserving some header information is all that is
    needed.
    >
    >    The MSH shall preserve in persistent storage the conversationId of
    an
    >    in-progress conversation until that conversation ends (no matter
    how
    >    long that takes).
    >
    >
    > No change is needed to the CPPA spec unless it now does not say that
    > persistDuration is the mininum length of time... (see Chris' words
    below).
    >
    > Regards,
    > Marty
    >
    >
    ************************************************************************
    ********
    
    
    
    > *****
    >
    > Martin W. Sachs
    > IBM T. J. Watson Research Center
    > P. O. B. 704
    > Yorktown Hts, NY 10598
    > 914-784-7287;  IBM tie line 863-7287
    > Notes address:  Martin W Sachs/Watson/IBM
    > Internet address:  mwsachs @ us.ibm.com
    >
    ************************************************************************
    ********
    
    
    
    > *****
    >
    >
    >
    > Christopher Ferris <chris.ferris@sun.com> on 12/04/2001 05:46:11 PM
    >
    > To:    Martin W Sachs/Watson/IBM@IBMUS
    > cc:    David Fischer <david@drummondgroup.com>, Dan Weinreb
    >        <dlw@exceloncorp.com>, ebxml-msg@lists.oasis-open.org
    > Subject:    Re: [ebxml-msg] Re: Comments on the 1.09 about
    ConversationId
    >
    >
    >
    > right now, the spec suggests #1 which is that pd is the
    > minimum length of time that a party will commit to
    > preserving a message (or its relevant artifacts) in
    > persistent store for purposes of filtering duplicate
    > messages.
    >
    > Cheers,
    >
    > Chris
    >
    > Martin W Sachs wrote:
    >
    >
    >>One of these possibilities:
    >>
    >>1. If the MSG spec states that persistDuration is a minimum length of
    >>
    > time,
    >
    >>then all you need is to add words to the MSG spec conveying additional
    >>rules when message ordering is in effect.
    >>
    >>2. If the MSG spec states that messages that live until
    persistDuration
    >>MUST be discarded right away, then we probably need additional text in
    >>
    > both
    >
    >>the MSG and the CPA spec.
    >>
    >>Regards,
    >>Marty
    >>
    >>
    >>
    >>
    >>
    >
    ************************************************************************
    ********
    
    
    
    > *****
    >
    >
    >>Martin W. Sachs
    >>IBM T. J. Watson Research Center
    >>P. O. B. 704
    >>Yorktown Hts, NY 10598
    >>914-784-7287;  IBM tie line 863-7287
    >>Notes address:  Martin W Sachs/Watson/IBM
    >>Internet address:  mwsachs @ us.ibm.com
    >>
    >>
    >
    ************************************************************************
    ********
    
    
    
    > *****
    >
    >
    >>
    >>
    >>David Fischer <david@drummondgroup.com> on 12/04/2001 02:39:43 PM
    >>
    >>To:    Martin W Sachs/Watson/IBM@IBMUS
    >>cc:    Dan Weinreb <dlw@exceloncorp.com>,
    ebxml-msg@lists.oasis-open.org
    >>Subject:    RE: [ebxml-msg] Re: Comments on the 1.09 about
    ConversationId
    >>
    >>
    >>
    >>Yes Marty, absolutely.  I think there are potential problems
    (discussed
    >>below)
    >>which make MessageOrder quite fragile.  I am shuddering over the
    thought
    >>
    > of
    >
    >>changing the persistDuration rules depending upon whether or not
    >>MessageOrder is
    >>present (wouldn't this constitute a CPA override!).
    >>
    >>I still like your other solution.
    >>
    >>Regards,
    >>
    >>David Fischer
    >>Drummond Group.
    >>
    >>-----Original Message-----
    >>From: Martin W Sachs [mailto:mwsachs@us.ibm.com]
    >>Sent: Tuesday, December 04, 2001 10:50 AM
    >>To: David Fischer
    >>Cc: Dan Weinreb; ebxml-msg@lists.oasis-open.org
    >>Subject: RE: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    >>
    >>
    >>
    >>Some comments below.
    >>
    >>Regards,
    >>Marty
    >>
    >>
    >>
    >
    ************************************************************************
    ********
    
    
    
    >
    >
    >>*****
    >>
    >>Martin W. Sachs
    >>IBM T. J. Watson Research Center
    >>P. O. B. 704
    >>Yorktown Hts, NY 10598
    >>914-784-7287;  IBM tie line 863-7287
    >>Notes address:  Martin W Sachs/Watson/IBM
    >>Internet address:  mwsachs @ us.ibm.com
    >>
    >>
    >
    ************************************************************************
    ********
    
    
    
    >
    >
    >>*****
    >>
    >>
    >>
    >>David Fischer <david@drummondgroup.com> on 12/04/2001 11:16:21 AM
    >>
    >>To:    Dan Weinreb <dlw@exceloncorp.com>
    >>cc:    ebxml-msg@lists.oasis-open.org
    >>Subject:    RE: [ebxml-msg] Re: Comments on the 1.09 about
    ConversationId
    >>
    >>
    >>
    >>Dan, did you mean to imply that messages are no longer stored once
    they
    >>
    > are
    >
    >>acknowledged?  This is not the case.  Messages must be stored longer
    than
    >>persistDuration.  In your scenario, when 12 got to the Receiving MSH,
    >>
    > 1-10
    >
    >>are
    >>still in the store.  If you wait so long that 1-10 have passed
    >>persistDuration,
    >>then I think you have waited so long that it does not matter any more.
    >>
    >>I see your point about what happens if there is nothing in the store
    and
    >>the
    >>Receiving MSH gets a message with a number larger than 1.  However,
    this
    >>implies
    >>the last ordered message/MessageId (which has been delivered in order)
    >>
    > must
    >
    >>be
    >>stored indefinitely (forever?) which is probably not acceptable.
    >>
    >>MWS:  For most conversations, there will be an indication of an end,
    at
    >>which time
    >>the last ordered message can be discarded.  I guess if storage is
    tight,
    >>you
    >>only need to keep the sequence number and conversationId of the last
    >>ordered message
    >>
    >>
    >>This also
    >>points out the conflict between Message Order and persistDuration.
    What
    >>
    > if
    >
    >>messages 1,2,3,4 have persistDuration of 2 days.  Messages 1,2,4 are
    >>delivered.
    >>The MSH hands 1,2 to the application but holds 4.  For some reason, 3
    is
    >>not
    >>delivered for 3 days.  In this case 3,4 have already passed
    >>
    > persistDuration
    >
    >>so
    >>they are not delivered.  The next day, 5 is delivered.  Since 3,4 were
    >>
    > not
    >
    >>delivered, then 5 cannot be delivered (nor any subsequent messages)
    even
    >>though
    >>it is still within TTL, and the ordering is forever broken for this
    >>ConversationId.  We may have to say Message Ordering does not work if
    any
    >>message in the order fails to be delivered within its persistDuration
    (or
    >>maybe
    >>TTL)?  Of course, all this can be adjusted at run time by increasing
    the
    >>value
    >>of persistDuration in the CPA.  Once again, MessageOrdering is based
    on
    >>persistDuration.
    >>
    >>MWS:  All of which says that some additional rules are needed on
    >>
    > discarding
    >
    >>messages
    >>in the presence of ordering.  The last ordered message cannot be
    >>
    > discarded
    >
    >>until
    >>either the next message in the sequence arrives or the application
    ends
    >>
    > the
    >
    >>conversation,
    >>regardless of its persist duration.  Similary, if there is a gap in
    the
    >>sequence numbers,
    >>all the out of sequence messages must be preserved, regardless of
    >>persistDuration,
    >>until they can be delivered.  The MSG or CPPA specification must
    provide
    >>advice on
    >>how long to set persistDuration depending on what combination of
    reliable
    >>messaging
    >>and ordering is being used.
    >>
    >>I am wondering why are we messing with all of this?  Did I see Marty
    >>suggest, if
    >>messages are order dependant, just wait for acknowledgment from the
    end
    >>before
    >>sending the next message?  Sounds good.
    >>
    >>MWS:  Ahhh... the light begins to dawn.
    >>
    >>Regards,
    >>
    >>David.
    >>
    >>-----Original Message-----
    >>From: Dan Weinreb [mailto:dlw@exceloncorp.com]
    >>Sent: Monday, December 03, 2001 9:40 PM
    >>To: david@drummondgroup.com
    >>Cc: rberwanger@btrade.com; ebxml-msg@lists.oasis-open.org
    >>Subject: Re: [ebxml-msg] Re: Comments on the 1.09 about ConversationId
    >>
    >>
    >>   Date: Mon, 03 Dec 2001 20:30:08 -0600
    >>   From: David Fischer <david@drummondgroup.com>
    >>
    >>          If there
    >>   are no messages in the persistent store pertaining to a
    conversation,
    >>   then
    >>there
    >>   is no need to store it any longer for the purposes of maintaining
    >>   message
    >>order.
    >>
    >>I'm not sure that would work.  Suppose two parties establish a
    >>conversation with ID 5551212.  Party A sends messages numbered 1
    >>through 10 to Party B, and party B's application reads all the
    >>messages and acknowledges them, so that there aren't any messages
    >>still waiting to be delivered to B.  Now a message arrives at B with
    >>conversation ID 5551212 and a sequence number of 12.  The MSH at B's
    >>end has to realize that is should not deliver this message to the
    >>application because message 11 hasn't arrived yet.  So the MSH at B's
    >>end has to be storing somewhere the fact that the most recent message
    >>delivered to the application from conversation 5551212 is 10.
    >>
    >>-- Dan
    >>
    >>
    >>
    >>----------------------------------------------------------------
    >>To subscribe or unsubscribe from this elist use the subscription
    >>manager: <http://lists.oasis-open.org/ob/adm.pl>
    >>
    >>
    >>
    >>
    >>
    >>
    >>
    >>
    >>----------------------------------------------------------------
    >>To subscribe or unsubscribe from this elist use the subscription
    >>manager: <http://lists.oasis-open.org/ob/adm.pl>
    >>
    >
    >
    >
    > ----------------------------------------------------------------
    > To subscribe or unsubscribe from this elist use the subscription
    > manager: <http://lists.oasis-open.org/ob/adm.pl>
    >
    >
    >
    >
    > ----------------------------------------------------------------
    > To subscribe or unsubscribe from this elist use the subscription
    > manager: <http://lists.oasis-open.org/ob/adm.pl>
    >
    >
    > ----------------------------------------------------------------
    > To subscribe or unsubscribe from this elist use the subscription
    > manager: <http://lists.oasis-open.org/ob/adm.pl>
    >
    
    
    
    
    
    
    ----------------------------------------------------------------
    To subscribe or unsubscribe from this elist use the subscription
    manager: <http://lists.oasis-open.org/ob/adm.pl>
    
    
    ----------------------------------------------------------------
    To subscribe or unsubscribe from this elist use the subscription
    manager: <http://lists.oasis-open.org/ob/adm.pl>
    
    
    
    
    ----------------------------------------------------------------
    To subscribe or unsubscribe from this elist use the subscription
    manager: <http://lists.oasis-open.org/ob/adm.pl>
    
    
    
    
    
    ----------------------------------------------------------------
    To subscribe or unsubscribe from this elist use the subscription
    manager: <http://lists.oasis-open.org/ob/adm.pl>
    
    ----------------------------------------------------------------
    To subscribe or unsubscribe from this elist use the subscription
    manager: <http://lists.oasis-open.org/ob/adm.pl>