> I disagree. At the point that the drain completes and returns, there are no
> pending communications on the local process for that communicator (see below).
> You are correct that an error at this stage would potentially crash the server.
> However, when the free is called, it is very easy for MPI to know that there
> are no further communications in progress. So, the process can go ahead and
> free all of the resources consumed by that communicator, including severing any
> lingering links which would bring down the server.
yes. Actually, the implementation will always know. It is
the user who can now be sure.
> It doesn't have to know what the previous call was, it simply needs to keep
> track of the current number of outstanding communications.
> I think that we can define "before" and "after" in strictly local terms. The
> set of requests that must be completed by a drain is exactly the set of isends
> and irecvs that were posted locally before the drain.
Of course. You're right. I had somehow convinced myself there
was a problem.
Ok. "This is a great idea".