lmdb: do import only after GLOBALS has been lazy-static created

This commit is contained in:
Mike Dilger 2023-08-07 16:00:17 +12:00
parent b25a07b491
commit 70e5d40176
2 changed files with 14 additions and 7 deletions

View File

@ -79,6 +79,9 @@ fn main() -> Result<(), Error> {
.with_env_filter(env_filter)
.init();
// Initialize storage
GLOBALS.storage.init()?;
// Load settings
let settings = GLOBALS.storage.read_settings()?.unwrap();
*GLOBALS.settings.write() = settings;

View File

@ -155,7 +155,7 @@ impl Storage {
let person_relays = env.create_db(Some("person_relays"), DatabaseFlags::empty())?;
let storage = Storage {
Ok(Storage {
env,
general,
event_seen_on_relay,
@ -169,21 +169,25 @@ impl Storage {
relationships,
people,
person_relays,
};
})
}
// Run this after GLOBALS lazy static initialisation, so functions within storage can
// access GLOBALS without hanging.
pub fn init(&self) -> Result<(), Error> {
// If migration level is missing, we need to import from legacy sqlite
match storage.read_migration_level()? {
match self.read_migration_level()? {
None => {
// Import from sqlite
storage.import()?;
storage.migrate(0)?;
self.import()?;
self.migrate(0)?;
}
Some(level) => {
storage.migrate(level)?;
self.migrate(level)?;
}
}
Ok(storage)
Ok(())
}
pub fn get_general_stats(&self) -> Result<Stat, Error> {