[E-Lang] remote comms
Bill Frantz
frantz@pwpconsult.com
Mon, 2 Apr 2001 16:01:05 -0700
At 5:35 PM -0700 3/31/01, Chris Hibbert wrote:
>I've recently working on a project in which we've been using ELib from
>Java. I have been responsible for writing the wrappers that are
>intended to make proxies and promises palatable to ordinary Java
>programmers. (Though I should admit that they're unordinary enough to
>have bought fairly rapidly Dean's arguments about distributed semantics
>and the need for an event-based style in order to build reliable
>deadlock-free systems.) I've just delivered my code, examples and doc
>to the customer, so there's no feedback yet on how palatable it will
>turn out to be.
>
>Dean did much of the design, but since I did most of the implementation,
>I have some comments on the kinds of issues Zooko raised.
>
>...
>
>One of the pieces we haven't implemented yet that these developers will
>definitely need is a simple invocation for time-out logic for
>practically all remote messages. I think this is the same need that
>zooko is talking about with his impatience logic. In our application,
>all (user-initiated) requests will have explicit requirements-driven
>need to timeout and return a default answer. In our context (making
>access control decisions) the default answer is that if we haven't
>received the information to make a positive decision in a certain amount
>of time, we forbid access. The distributed components are working
>together to reach this decision, so it could just be the code that talks
>to the user that times out. We'll probably have time-outs in most of
>the components so they take a limited amount of time and don't waste
>computrons on hard questions that the requester has given up on.
>
>My intuition today is that it should be simple to build both promises
>that have an explicit time-out and ones that don't. The latter
>shouldn't time out any sooner than the underlying mechanisms (e.g. TCP)
>require.
There is some level of timeout already built into the data/proxy comm systems.
The data comm system periodically pings the other end and shuts the
connection down if a response is not received. A quick glance at the code
makes me think that proxy comm responds to this event by breaking the
promises outstanding on the connection.
The timeouts are set in Msg.java, and are currently using debug values
which are in minutes. (Every 15 minutes see if the connection has been
idle for 20 minutes. If it has, send a ping and wait 20 minutes for a
response.) The production value is supposed to be in seconds, but that has
been changed to minutes for debugging. :-)
Cheers - Bill
-------------------------------------------------------------------------
Bill Frantz | Microsoft Outlook, the | Periwinkle -- Consulting
(408)356-8506 | hacker's path to your | 16345 Englewood Ave.
frantz@netcom.com | hard disk. | Los Gatos, CA 95032, USA