Currently, the default backend (default.ecf) will also be used for bootstrapping. There are two problems with this approach:
- Thus the default backend first will be read with parentKey
system:/elektraand later with parentKeysystem:/, it needs to store absolute paths and thus won't work with most of the plugins (except dump). - When
system:is large without mount points, everything is reread twice during bootstrapping.
- Bootstrap should be fast and not unnecessarily read large files
- Implement a hack so that
system:/elektrais actually read assystem:/. (Will not solve problem 2.)- It's a hack.
- Its confusing and does not play well with persistent data with relative key names.
- Split up without compatibility mode: would need to migrate all mount points by exporting (with old version!) and then importing (with new version!)
- I consider this too error-prone, people might easily forget to export with the old version and then discard their mount points unintentional.
Split up the concepts of default (default.ecf) and bootstrap (elektra.ecf) backend.
During bootstrap only elektra.ecf is read.
The default backend reading default.ecf is only relevant as long as no root backend is mounted.
Algorithm:
- get system:/elektra using the file elektra.ecf (KDB_DB_INIT)
- mount
elektra.ecf(the init backend) to system:/elektra
Added scripts/upgrade-bootstrap to migrate from previous setups to upgrade to new system, either:
- touch /etc/kdb/elektra.ecf (loses old mount points)
- or do kdb export system:/elektra/mountpoints, kdb rm -r system:/elektra/mountpoints, kdb import system:/elektra/mountpoints