[e-lang] CapTP in E progress report #5
Kevin Reid
kpreid at mac.com
Mon Aug 13 16:17:26 EDT 2007
On Aug 13, 2007, at 15:05, Mark Miller wrote:
> On 8/13/07, Kevin Reid <kpreid at mac.com> wrote:
>> I think this is not too unreasonable behavior. For one thing,
>> attempting to preserve the unconnected ref's identity would, given
>> non-transitive network failures, result in a disconnected ref
>> possibly arriving as a far (non-broken) ref.
>
> If our only choices are that a disconnected ref 1) arrives
> unconnected vs 2) that it might arrive non-broken, then I'd agree
> that #1 is preferable to #2. I haven't thought about it much, but
> my immediate reaction is that #2 would not be acceptable.
The third option that I think of now is that it arrives with an
identity unique to the origin vat (the holder of the reference who
saw it break), so passing it twice produces the same reference in the
receiving vat. Now that I think about it, this is the 'best' that can
possibly be done, given that the passing carries the problem along:
that problem is (potentially) unique to that particular event-of-
disconnection.
This would require that:
- The problem must be PassByCopy (not just pbc), or multiple passings
would arrive with problems that are not the same. It not being so
does no harm, but eliminates the sameness benefits.
- The primitive implementation of Ref.optSealedDispatch for
disconnected-refs is changed to invoke the proxy handler, so that a
disconnected ref can be recognized by the outgoing serialization.
- Upon breakage of a connection, the newly disconnected refs would be
associated with swiss numbers, which are used to distinguish this
particular disconnected-ref
- A new maker or descriptor-class to produce the disconnected refs in
the receiving vat. Its arguments would be (swiss, problem) or
possibly (originVatID, swiss, problem). If invoked in the origin vat
with a swiss number previously assigned to an exported disconnected
ref, it returns that ref.
This seems like a nontrivial amount of additional complexity in CapTP
to support a small improvement. It would be useful for some kinds of
distributed map-key usage patterns, though.
(The Ref.optSealedDispatch change might be good to do anyway, though.)
--
Kevin Reid <http://homepage.mac.com/kpreid/>
More information about the e-lang
mailing list