
On Apr 05, Jim Pruyne modulated:
- On updated termination diagram: * Asit to send a note on the mailing list to verify that we really have a transition from PendingAndTerminating to ObservedAndTerminating. None of us seem to be able to come up with a message sequence that would cause that to happen.
I think this transition is implied by Toshi's "broker" example, unless we assert that there is some sort of transactional semantics in the protocol? If you make an offer to a broker, and it is pending in the broker because he has started to make offers to other service managers, your terminate request MAY arrive during the hazard window where the broker has started making commitments but has not received accepts from the subsidiary services yet. The client-to-broker agreement changes state to pending-terminating, and the broker can attempt to terminate the subsidiary agreements. However, depending on whether they terminate before or after they are accepted, the broker may want to communicate this "distributed acceptance" transition that occurred during the termination phase. I assume this has impact and is important to model in the event that the "penalties" are different depending on whether termination occurs before or after acceptance. The fundamental issue is that with pending agreements, the initiator has already committed in his offer message and he is at the mercy of the responder to decide if a termination request occurs before or after acceptance. Because of these hierarchical and asynchronous agreement scenarios, I think we have to make the termination request interaction also be asynchronous. Just as with the acceptance/rejection window, there is a window between when the termination request is received and the outcome is known. We can either delay the response, or model the uncertain intermediate state in the agreement state. I think we should do the latter to be consistent with how we have handled the acceptance/rejection window. For consistency, perhaps we should even go so far as to introduce two terminate request variants? One that is synchronous and delays the response, and one that responds early but leaves the agreement in an uncertain state? karl -- Karl Czajkowski karlcz@univa.com