Storage service age limit

The age limit determines at which point in time a database is "retired". retired in this context means, that the access is shut-down, but all information to dynamically re-open the database is kept. This database retirement is necessary, because opposite to a "real" database, where typically 1 connection is sufficient, file based databases cannot be arbitrarily closed - it is never clear if there is still an object reference around, which may require updating.

The age limit of any POOL database is growing if a read-only database is not accessed AND a new database is opened. As soon as a read-only database is accessed, the age for this database is set to NULL. Hence, if a database was not accessed while N new databases were opened, this database gets retired.

While being retired, a database effectively cannot serve any requests.

When using POOL, the database is however automatically re-opened when a new read request arrives. On object updates, the persistency service ensures, that the database in question is re-opened in update mode.

The age limit can be steered externally using an environment variable: STORAGESVC_DB_AGE_LIMIT

Reasonable values are typically 2 or 3 if objects in the files are processed in a more or less sequential manner.

For pure random object access in many files, this value must be set to a high value (~20 or 30).