[e-lang] Proposal: Remove parametersfrom __whenMoreResolved/__whenBroken reactors

Mark S. Miller markm at cs.jhu.edu
Mon Feb 27 13:58:09 EST 2006

Karp, Alan H wrote:
> MarkM wrote:
>>For example, let's say Xb is a remote promise in VatB for a 
>>local promise Xa whose promise/resolver pair is on VatA, and 
>>Ya is a remote promise in VatA for a local promise Yc on 
>>VatC. If VatA resolves Xa to Ya, this notifies the 
>>DelayedRedirector for Xb with a new Yb as the argument. (This 
>>Yb is made during unserialization of the reactor 
>>notification message.) The DelayedRedirector uses this 
>>argument to shorten Xb to be equivalent to Yb, cutting VatA 
>>out of the promise chain. If nothing else is retaining the 
>>portion of this promise chain in VatA, it can will be gc'ed.
> What happens if VatB can't reach VatC, say because of a firewall?

When VatB finally gives up trying to reach VatC, it will break the Yb remote 
promise, causing Xb to be equivalently broken (since they are now the same thing).

As we've discussed, I suspect more tolerant behaviors are possible without 
changing E's semantics or Pluribus protocol definition. (Though the more 
tolerant behaviors would change how E's semantics are mapped onto Pluribus.) I 
haven't thought too deeply about the needed changes, and can't the time right 
now, so I'm not sure such changes will be as non-disruptive as I suspect.

But the current behavior does indeed prefer to shorten to broken rather than 
preserve a working indirect chain.

Text by me above is hereby placed in the public domain


More information about the e-lang mailing list