What is the role of the vovdbd daemon and vovdbd slave?

AlanB_22262
AlanB_22262 New Altair Community Member
edited February 2023 in Altair HPCWorks

The Runtime database is managed by a daemon named vovdbd; instead of issuing commands directly, though, it has a vovslave to run them. The name of this vovslave is also vovdbd. When you go to the database page from the NetworkComputer Admin or LicenseMonitor Admin pages, you are redirected to /cgi/vovdbd.cgi.  Here, you should enter the database hostname and path to the top-level of the database directory.

The needed roles, passwords, and port are chosen and created automatically when the database is first started. This information is stored in properties on objects in the vovserver. Examine the dbconn script for the details of where all the properties are stored. In most cases, the database will be on the same host as vovserver, but remote hosting is supported.

Important: You must click Save, before these values are committed to properties. This will enable the vovdbd daemon to start the database. The daemon sets up the schema, chooses a random port number, and sets up a random password that is also saved on a property.

An available AE-ware script dbconn queries the properties and prints instructions on how to connect manually to the database using psql for troubleshooting, if needed. 

Under the top-level database directory, vovdbd will create a version-specific directory, in which the data files and config files are found, something like pgdata_9_4.

The vovdbd vovslave keeps its logs in: <project.swd/logs/slaves/vovdbd/...

The vovdbd daemon's log files are found in: <project>.swd/vovdbd/

There are two kinds of logs saved here, those of the vovdbd daemon and daily log-rotated logs of database activity.

Troubleshooting

To see whether the database is running, check for postgres processes:

% ps auxww | grep postgres

Verify that the path of the master process binary is from the Runtime install hierarchy, to distinguish it from a possible system one.

Runtime also supplies a command-line utility, named vovdb_util to manage the database. You need to enable your shell to connect to your project's vovserver to use it. For example, + get shell as NC/LM owner, with Runtime commands in the following path.

% vovproject enable licmon  (use your VOV-project name if not 'licmon') % vovdb_util showcfg

Code

The vovslave program is a binary, found at $VOVDIR/bin. The Postgres binaries are at $VOVDIR/postgresql. Recent versions ship both Postgres 9.4 and 9.6 to provide a way to upgrade the PG version.

Runtime supplies a named environment PG that adds the above to the PATH. This environment defaults to selecting the newer version, but also accepts the version as a parameter, e.g. PG(9_4).

 % ves +PG

The main code for the vovdbd daemon is in $VOVDIR/scripts (unlike many others, which are in $VOVDIR/tcl/vtcl, linked wrappers in $VOVDIR/scripts). This also uses Tcl modules from $VOVDIR/tcl/vtcl/modules that are loaded automatically via package require.

Note: In 2015.09, Runtime discontinued support for the SQLite andMySQL databases. A managed version of Postgres is now used.