mirror of
https://github.com/chatmail/core.git
synced 2026-04-17 21:46:35 +03:00
config_cache fixes (#3145)
* add simple backup export/import test this test fails on current master until the context is recrated. * avoid config_cache races adds needed SQL-statements to config_cache locking. otherwise, another thread may alter the database eg. between SELECT and the config_cache update - resulting in the wrong value being written to config_cache. * also update config_cache on initializing tables VERSION_CFG is also set later, however, not doing it here will result in bugs when we change DBVERSION at some point. as this alters only VERSION_CFG and that is executed sequentially anyway, race conditions between SQL and config_cache seems not to be an issue in this case. * clear config_cache after backup import import replaces the whole database, so config_cache needs to be invalidated as well. we do that before import, so in case a backup is imported only partly, the cache does not add additional problems. * update CHANGELOG
This commit is contained in:
@@ -36,6 +36,13 @@ pub async fn run(context: &Context, sql: &Sql) -> Result<(bool, bool, bool, bool
|
||||
Ok(())
|
||||
})
|
||||
.await?;
|
||||
|
||||
let mut lock = context.sql.config_cache.write().await;
|
||||
lock.insert(
|
||||
VERSION_CFG.to_string(),
|
||||
Some(format!("{}", dbversion_before_update)),
|
||||
);
|
||||
drop(lock);
|
||||
} else {
|
||||
exists_before_update = true;
|
||||
dbversion_before_update = sql
|
||||
|
||||
Reference in New Issue
Block a user