From a0237dbe6fb904aac1338ecc1aae2dbe0900ac3f Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 26 Mar 2018 11:24:57 +0200 Subject: Avoid a database upgrade when creating the db first. By setting the database version initially. --- common/genericresource.cpp | 8 ++++---- common/pipeline.cpp | 5 +++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/common/genericresource.cpp b/common/genericresource.cpp index 97ce968..5f49814 100644 --- a/common/genericresource.cpp +++ b/common/genericresource.cpp @@ -58,10 +58,10 @@ void GenericResource::setSecret(const QString &s) bool GenericResource::checkForUpgrade() { - const auto currentDatabaseVersion = [&] { - auto store = Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadOnly); - return Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly)); - }(); + auto store = Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadOnly); + //We rely on the store already having been created in the pipeline constructor before this get's called. + Q_ASSERT(store.exists()); + const auto currentDatabaseVersion = Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly)); if (currentDatabaseVersion != Sink::latestDatabaseVersion()) { SinkLog() << "Starting database upgrade from " << currentDatabaseVersion << " to " << Sink::latestDatabaseVersion(); diff --git a/common/pipeline.cpp b/common/pipeline.cpp index 4e55e76..434f732 100644 --- a/common/pipeline.cpp +++ b/common/pipeline.cpp @@ -63,8 +63,9 @@ public: Pipeline::Pipeline(const ResourceContext &context, const Sink::Log::Context &ctx) : QObject(nullptr), d(new Private(context, ctx)) { //Create main store immediately on first start - d->entityStore.startTransaction(DataStore::ReadWrite); - d->entityStore.commitTransaction(); + auto store = Sink::Storage::DataStore(Sink::storageLocation(), context.instanceId(), Sink::Storage::DataStore::ReadWrite); + auto t = store.createTransaction(Storage::DataStore::ReadWrite); + Storage::DataStore::setDatabaseVersion(t, Sink::latestDatabaseVersion()); } Pipeline::~Pipeline() -- cgit v1.2.3