Notable changes:
- Fix a big locking design problem.
- Convert
valid
boolean flag into astatus
field in versions table. This solves a problem where incomplete backups where marked as valid by adeep-scrub
. The new status field can be queried in filter expressions like so:status == "valid"
. Third party scripts might need adjustments. - All binary keys and salts in the configuration file are now BASE64 encoded instead of using the
!!binary
YAML extension. This is for better compatibility with 3rd party tools like Helm. User action needed. - Implement proper handling of datetime columns in filter expressions. Things like
date < "1 day ago"
are now possible. - Make database migrations work properly again. Database migrations are now an explicit process and not automatic anymore. Use the new
database-migrate
command. - When restoring to an existing RBD image discard all existing data before the restore so as not to use more space then needed.
- Increase standards conformance of Benji's NBD server (a little bit).
- Convert read cache to use a sharded design to increase scalability.
- Optimize database access pattern when backing up an image with a lot of sparse blocks.
- Optimize database commit handling.
- Implement workaround for SQLite database write access contention problem. Please use PostgreSQL if you're planning on having multiple Benji processes running at the same time, SQLite wasn't designed for this.
A big thank you goes to @olifre for his extensive testing efforts and his valuable feedback!