GO TO A SECTION

↑ ↓ to navigate · Enter to openExplore all sections →
FDEInterviews logo
Sun Microsystems Laboratories technical report SMLI TR-94-29

A Note on Distributed Computing

Remote calls are not local calls with more latency: partial failure and concurrency cannot be hidden, so they belong in the interface. Sun's 1994 warning applies to every tool an agent calls.

Breakdown by FDE Interviews · 11 min read · Updated

About the original · 1994
AUTHORS
Waldo, Wyant, Wollrath, Kendall
FROM
Sun Microsystems Laboratories
PUBLISHED
Nov 1994 · Sun Microsystems Laboratories technical report SMLI TR-94-29
CITED BY
517Semantic Scholar · Oct 2026
IN THIS BREAKDOWN · 10 SECTIONS

You can read 24% of this breakdown.

01

The paper in one minute

In 1994, the distributed objects movement (CORBA and research systems such as Arjuna, Emerald and Clouds) promised that objects would be one kind of thing whether they shared an address space or sat on different machines. You would design the application ignoring location, tune performance later by moving objects around, and finally harden the interfaces that turn out to suffer partial failures. Jim Waldo, Geoff Wyant, Ann Wollrath and Sam Kendall at Sun Microsystems Laboratories argued that "all of these principles are false".

They identify four differences between local and remote calls. Latency differed by four to five orders of magnitude, and they expected the gap to grow; it is the most obvious difference and the least fundamental. Memory access differs because a pointer means nothing in another address space; hiding that requires total control of memory access, and any half-hidden scheme invites bugs. Partial failure is the decisive one: in a local program a failure is either total or detectable by the operating system, but in a distributed system one machine or link can fail while the rest continue, no central agent knows what failed, and a failed link looks exactly like a failed machine. Concurrency follows: remote objects face truly asynchronous invocations with no single manager for synchronization or recovery.

A single model must therefore either ignore partial failure, leaving distributed programs fragile, or impose distributed semantics on every local call, making all programs harder. Neither works.

The authors call the claim that reliability is just a "quality of service" of an implementation a myth, with examples: retrying an enqueue after time-outs creates duplicates that the queue cannot remove because its interface has no request IDs; retrying a name removal until it succeeds can delete another client's binding; NFS, a local file interface run over the network, forced users to choose between soft mounts that return unexpected errors and hard mounts that freeze machines. Their conclusion: decide per object whether it is local or remote, and give remote interfaces the operations needed to cope with partial failure.

THE IDEA, VISUALLY
LOCAL VERSUS REMOTE: FOUR DIFFERENCES Latency 4-5 orders of magnitude (1994) maskable in principle Memory access pointers mean nothing remotely maskable only if total Partial failure one part fails, others continue cannot be hidden Concurrency no central manager, truly async cannot be hidden A failed link looks exactly like a failed machine. With no global state to inspect, the caller cannot know how much of its request happened. THE VISION THE PAPER CALLS FALSE • one natural object design, wherever it is deployed • failure and performance can be left out of the first design • an object's interface is independent of its context Messages (1970s), RPC (1980s), objects (1990s): same promise. THE MYTH OF "QUALITY OF SERVICE" Retrying an enqueue time-out → retry → work done 2, 3, 4 times. The queue cannot drop duplicates: items are just values. Fix: request IDs, which the standard interface lacks. Removing a name until it succeeds A's remove worked but the reply was lost; B re-adds the name; A's retry removes B's binding. LESSONS FROM NFS Soft mount errors programs never expected; files corrupted Hard mount one server dies, many workstations freeze Robustness is a property of the interface. A more reliable implementation cannot fix an interface designed for a world without partial failure. Decide local or remote per object, and make remote interfaces say how they fail.
Latency and memory access separate local from remote calls, but partial failure and concurrency are what make them different in kind. The paper's queue, naming and NFS examples show the failures landing at the interface, where no better implementation can fix them.
Research notes: the problem, approach and results
10⁴-10⁵

the 1994 gap between local and remote call latency, four to five orders of magnitude, expected to grow

4

differences between local and remote calls: latency, memory access, partial failure, concurrency

3

decades in which the same unification promise returned: messages, procedure calls, objects

THE PROBLEM

Distributed object systems such as CORBA promised that a programmer could call an object without knowing or caring whether it lived in the same address space or on another continent, deferring location, performance and failure to later tuning.

THE IDEA

Local and remote calls differ in latency, memory access, partial failure and concurrency. The first two might in principle be masked; the last two cannot, because a remote call can fail partway with no way to know what happened. Robustness therefore has to be designed into interfaces, not bolted on as implementation quality.

THE RESULT

Unified local-remote models either ignore partial failure and are fragile, or burden every local call with distributed semantics. NFS, built on a local file interface, shows both outcomes. The authors recommend marking objects as local or remote and giving remote interfaces operations for failure and recovery.

02

Why it matters to an FDE

An agent's tools look like function calls to the model: a name, arguments, a result. Behind most of them is a network call to another service, with every failure mode this paper describes.

Tool calls fail partially. A timeout does not tell you whether the booking was made. Design every state-changing tool so that the caller can find out (a lookup by request ID) or safely retry (idempotency keys).

Retrying is not robustness. The paper's queue story is the agent that retries "create ticket" after a timeout and files three tickets. The fix belongs in the tool's interface, not in a smarter retry loop.

Latency shapes the design. A model call or remote tool takes milliseconds to seconds, so a chatty agent design that would be fine locally becomes slow and expensive. Decide early which calls can be batched or cached.

Wrappers can hide the difference. Frameworks and protocols that make remote tools look local are convenient; make sure the failure semantics survive the wrapping, so the agent sees "unknown outcome" distinctly from "failed".

THE FULL BREAKDOWN

Understand the mechanism. Try it on a real problem.

Unlock this breakdown and 99 more papers.

Premium opens every paper in full, plus every answer, concept, course and guide on the site. One payment for six months of access.

6 months · One payment · No auto-renewal

Get Premium · ₹2,000 / $25
  • ◇1 architecture diagram
  • </>1 runnable code experiment
  • ▦1 results table
  • ?5 interview questions with answers
  1. 03Key takeaways

    The vision's three principles, the four differences, the price of unification and the misreadings

    Free account
  2. 04How it works

    The argument step by step: the four differences, the examples and the proposal

    Premium
  3. 05The numbers that matter

    The latency gap then and now, and the paper's few quantitative claims

    Premium
  4. 06Try it yourself

    Measure the local-remote gap on your machine, then simulate the queue and naming failures

    Premium
  5. 07Where it breaks

    What the paper argues without showing, what changed, and its internal slips

    Premium
  6. 08Using it on a deployment

    Designing an agent's tools so remote failure is handled, not hidden

    Premium
  7. 09Interview angles

    Five questions this paper prepares you for, with answer hints

    Premium
Back to the paper library →