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