Fix sequencing of database closes

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
This commit is contained in:
automated-signal 2024-02-26 18:57:20 -06:00 committed by GitHub
parent 33a2810967
commit d545f8704a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -642,25 +642,18 @@ async function initialize({
}
async function close(): Promise<void> {
globalReadonlyInstance?.close();
globalReadonlyInstance = undefined;
// SQLLite documentation suggests that we run `PRAGMA optimize` right
// before closing the database connection.
globalWritableInstance?.pragma('optimize');
globalWritableInstance?.close();
globalWritableInstance = undefined;
globalReadonlyInstance?.close();
globalReadonlyInstance = undefined;
}
async function removeDB(): Promise<void> {
if (globalWritableInstance) {
try {
globalWritableInstance.close();
} catch (error) {
logger.error('removeDB: Failed to close database:', error.stack);
}
globalWritableInstance = undefined;
}
if (globalReadonlyInstance) {
try {
globalReadonlyInstance.close();
@ -669,6 +662,14 @@ async function removeDB(): Promise<void> {
}
globalReadonlyInstance = undefined;
}
if (globalWritableInstance) {
try {
globalWritableInstance.close();
} catch (error) {
logger.error('removeDB: Failed to close database:', error.stack);
}
globalWritableInstance = undefined;
}
if (!databaseFilePath) {
throw new Error(
'removeDB: Cannot erase database without a databaseFilePath!'