Oberon || Compiler & Tools || Library || Module Index || Search Engine


Ulm's Oberon System:
cdbd


NAME

cdbd - CDB daemon

SYNOPSIS

cdbd [-a authfile] [-b basedir] {-B bind-address port} [-i intensity] [-m] [-r read-auth] [-s shutdown-auth] [-w write-auth] dbname

DESCRIPTION

cdbd provides a persistent storage for the compiler database (CDB). All objects are stored using a container (see Containers and StandardContainers) that is based upon a safe storage using TransStreams on a regular file named dbname. The database file dbname will be created if it does not exist yet.

Note that database files basing on StandardContainers and TransStreams contain holes causing the size returned by stat(2) to be much larger than the actual disk usage. These files must be copied with care (either compress them first, or use options like -sparse of star(1)). It is not safe, however, to copy a database file while cdbd is running.

All objects of the database are visible through the Oberon name space system (see Names) and will be mounted at basedir (default /pub/cdb). Note that basedir must exist already.

The root directory of the name space of cdbd has two entries: a directory named modules and a maintenance object called cdbd that can be used by onsstat or onsshut. Below modules a directory is created for each existing module with following sub structure:


modname/obj/genkey/arch/archkey/def/srcid/sth unique
modname/obj/genkey/arch/archkey/mod/srcid/sth unique
modname/obj/genkey/gen/def/srcid/sth unique
modname/obj/genkey/gen/mod/srcid/sth unique
modname/src/def/srcid
modname/src/mod/srcid

Following definitions apply:

modname
modname the full unabridged named of the module
genkey
the architecture-independent key (in ASCII form), see CompilerKeys
arch
the architecture (in ASCII form), see Architectures archkey the architecture-dependent key (in ASCII form)
srcid
MD5 checksum of the source
sth unique
an unique name that will be generated by CDBNames

cdbd may be terminated by killing it (sending SIGTERM is preferred), or invoking onsshut for the object named cdbd in the base directory. On termination, cdbd does not necessarily finish any on-going transactions or requests.

Following options are supported:

-a authfile
specifies a file containing a persistent object of type Shards.Lid that is to be used for authorization to insert the root node of CDB into the Oberon name space.
-b basedir
defines the base path of the compiler data base (CDB). Default is /pub/cdb.
-B bind-address port
add this port to those ports used by RemoteObjects. By default an ephemeral port address is taken.
-i intensity
allows to set the intensity level for Storage.Intensity (see Storage). This allows to fine-tune the balance of memory usage vs CPU time by the garbage collection. By default, the intensity is 9. Lower intensity values reduce memory usage but cause CPU overhead by more frequent garbage collections. Higher intensity values cause more memory to be used while saving more CPU time. Please note however, that the address space can also be a significant limit, i.e. at high intensity values it is possible that no more address space is found by Memory.
-m
asks to setup performance monitoring by SysMonitor. Statistics are printed to standard output whenever SIGALRM is received.
-r read-auth
specifies a file containing a persistent pair of shards (of types Shards.Lid and Shards.Pot). If given, all read-only accesses must provide a lid that fits to the pot of read-auth. By default no authorization is required for read-only accesses. If this file does not exist yet, it is created and initialized with a pair of private shards (see PrivateShards).
-s shutdown-auth
specifies a file containing a persistent pair of shards (of types Shards.Lid and Shards.Pot). Shutdown operations on the cdbd object in the root directory must provide a lid that fits to shutdown-auth. By default, shutdown-auth equals write-auth. If this file does not exist yet, it is created and initialized with a pair of private shards (see PrivateShards).
-w write-auth
specifies a file containing a persistent pair of shards (of types Shards.Lid and Shards.Pot). If given, all write-accesses must provide a lid that fits to the pot of write-auth. By default, write accesses are prohibited to everybody. If this file does not exist yet, it is created and initialized with a pair of private shards (see PrivateShards).

ENVIRONMENT

UnixNames is used to find the shared Oberon name space. This module considers the environment variable ONS_ROOT to find the Oberon name server.

SEE ALSO

obload
compiles (if necessary) and loads modules.
obci
check in Oberon sources into the CDB.
obco
check out Oberon sources from the CDB.
pons
daemon defining the shared root of the Oberon name space.

Edited by: borchert, last change: 2005/02/10, revision: 1.5, converted to HTML: 2005/02/10

Oberon || Compiler & Tools || Library || Module Index || Search Engine