Fix sequencing of database closes

This commit is contained in:
Fedor Indutny 2024-02-26 15:55:11 -08:00 committed by GitHub
parent a795ae6157
commit ab1ae26489
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!'