PreviousNext

Automatic Endpoint Map Administration

Each server that uses the endpoint map stores a set of information in the endpoint map when it starts up. The information includes UUIDs (Universal Unique Identifiers) for objects and interfaces offered by the server, an annotation string, and other fields.

The endpoint map resides on disk in dcelocal/var/dced/Ep.db and dcelocal/var/dced/Srvrexec.db. After a system reboot, DCE-based servers restart and reregister with the endpoint mapper dervice, so the database files need to be deleted before the DCE daemon starts. This happens automatically on most systems.

DCE-based servers normally need to register with the endpoint mapper service on startup and unregister on termination. If any servers exit without unregistering, the endpoint map may contain stale entries. DCE provides server control facilities that help servers unregister and avoid leaving stale entries in the endpoint map. Servers that do not use these facilities (older servers, for example) are more likely to leave stale entries if they exit unexpectedly. So periodically, the DCE daemon (dced) purges stale entries by scanning the endpoint map, "pinging" each server that is registered, and deleting entries for servers that do not respond.

The background process of removing stale entries is not intended to be highly responsive. It is not intended to replace the need for servers to unregister themselves from the endpoint map when they no longer service RPCs. Rather, this processing is intended only to clean up after a server failure.

While the behavior of the pinging/purging mechanism is implementation dependent, in a typical implementation the database is scanned (that is, servers are pinged and stale entries removed) only infrequently; for example, a few times an hour. Once a ping to a server fails, the server is pinged several times over a shorter interval; for example, every 5 minutes. If the server continues to not respond, the dced determines that its entry is "stale" and removes it from the database. Ultimately, the rate at which stale server entries are detected and purged depends on the number of stale entries in the database; the more stale entries, the longer it takes to detect and purge the stale entries.