Cleanup database at exit, use write-ahead logging. By @samuel-w (#696)

This commit is contained in:
samuel-w 2020-12-15 21:27:49 -06:00 committed by GitHub
parent abd41b9fea
commit 3112a111f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 3 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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