diff --git a/src/vorta/__main__.py b/src/vorta/__main__.py index 14378754..a1bb1060 100644 --- a/src/vorta/__main__.py +++ b/src/vorta/__main__.py @@ -48,7 +48,7 @@ def main(): init_logger(background=want_background) # Init database - sqlite_db = peewee.SqliteDatabase(os.path.join(SETTINGS_DIR, 'settings.db')) + sqlite_db = peewee.SqliteDatabase(os.path.join(SETTINGS_DIR, 'settings.db'), pragmas={'journal_mode': 'wal', }) init_db(sqlite_db) # Init app after database is available diff --git a/src/vorta/application.py b/src/vorta/application.py index 810a274b..01d7b3ab 100644 --- a/src/vorta/application.py +++ b/src/vorta/application.py @@ -12,7 +12,7 @@ from vorta.borg.create import BorgCreateThread from vorta.borg.version import BorgVersionThread from vorta.config import TEMP_DIR from vorta.i18n import init_translations, translate -from vorta.models import BackupProfileModel, SettingsModel +from vorta.models import BackupProfileModel, SettingsModel, cleanup_db from vorta.qt_single_application import QtSingleApplication from vorta.scheduler import VortaScheduler from vorta.tray_menu import TrayMenu @@ -74,6 +74,7 @@ class VortaApp(QtSingleApplication): self.backup_finished_event.connect(self.backup_finished_event_response) self.backup_cancelled_event.connect(self.backup_cancelled_event_response) self.message_received_event.connect(self.message_received_event_response) + self.aboutToQuit.connect(cleanup_db) self.set_borg_details_action() self.installEventFilter(self) diff --git a/src/vorta/models.py b/src/vorta/models.py index ac6ef79e..ff5a236b 100644 --- a/src/vorta/models.py +++ b/src/vorta/models.py @@ -252,6 +252,11 @@ def get_misc_settings(): return settings +def cleanup_db(): + # Clean up database + db.execute_sql("VACUUM") + + def init_db(con=None): if con is not None: os.umask(0o0077) diff --git a/tests/conftest.py b/tests/conftest.py index 069a2888..64cefbbf 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -66,7 +66,7 @@ def cleanup(request, qapp, qtbot): @pytest.fixture(scope='session') def qapp(tmpdir_factory, local_en): tmp_db = tmpdir_factory.mktemp('Vorta').join('settings.sqlite') - mock_db = peewee.SqliteDatabase(str(tmp_db)) + mock_db = peewee.SqliteDatabase(str(tmp_db), pragmas={'journal_mode': 'wal', }) vorta.models.init_db(mock_db) from vorta.application import VortaApp