couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Lehnardt <>
Subject Configuration Load Order
Date Mon, 18 Jul 2011 16:14:43 GMT
Hey all,

we found an oddity with the way we read config files and directories on startup.

From the 0.10.0 docs (

> CouchDB now loads configuration from the following places (glob(7) syntax) in order:
> 	• PREFIX/default.ini
> 	• PREFIX/default.d/*
> 	• PREFIX/local.ini
> 	• PREFIX/local.d/*

The way I've understand the config system is that system defaults go into default.ini and
default.d/* and local overrides go into local.ini and local.d/*.

The reason (I believe) *.d/ exist is that in a distribution some special configuration can
be added. For the sake of example, I think GeoCouch is a good example to think about this.
A CouchDB installation with GeoCouch could have the following config files:

$etcdir/default.ini # system defaults
$etcdir/default.d/geocouch.ini # geocouch system defaults
$etcdir/local.ini # user settings overriding defaults in default.ini
$etcdir/local.d/geocouch.ini # user settings overriding defaults in default.d/geocouch.ini.

Now if one uses the /_config API, new settings are stored in local.d/geocouch.ini rather than
local.ini (as I'd expect).

I'd therefore consider the load order to be wrong and propose to change it so that local.ini
is the very last item in the config chain.

Alternatively, I'd like to know that there are flaws in my assumptions above :)


View raw message