diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-03-26 11:24:57 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-03-26 11:24:57 +0200 |
commit | a0237dbe6fb904aac1338ecc1aae2dbe0900ac3f (patch) | |
tree | 6c00d48b8d7b07907e46b81649ff05d89667a0aa | |
parent | 0f6f34ca2fca81734544b32e8dbc8ee32122bb65 (diff) | |
download | sink-a0237dbe6fb904aac1338ecc1aae2dbe0900ac3f.tar.gz sink-a0237dbe6fb904aac1338ecc1aae2dbe0900ac3f.zip |
Avoid a database upgrade when creating the db first.
By setting the database version initially.
-rw-r--r-- | common/genericresource.cpp | 8 | ||||
-rw-r--r-- | 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) | |||
58 | 58 | ||
59 | bool GenericResource::checkForUpgrade() | 59 | bool GenericResource::checkForUpgrade() |
60 | { | 60 | { |
61 | const auto currentDatabaseVersion = [&] { | 61 | auto store = Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadOnly); |
62 | auto store = Sink::Storage::DataStore(Sink::storageLocation(), mResourceContext.instanceId(), Sink::Storage::DataStore::ReadOnly); | 62 | //We rely on the store already having been created in the pipeline constructor before this get's called. |
63 | return Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly)); | 63 | Q_ASSERT(store.exists()); |
64 | }(); | 64 | const auto currentDatabaseVersion = Storage::DataStore::databaseVersion(store.createTransaction(Storage::DataStore::ReadOnly)); |
65 | if (currentDatabaseVersion != Sink::latestDatabaseVersion()) { | 65 | if (currentDatabaseVersion != Sink::latestDatabaseVersion()) { |
66 | SinkLog() << "Starting database upgrade from " << currentDatabaseVersion << " to " << Sink::latestDatabaseVersion(); | 66 | SinkLog() << "Starting database upgrade from " << currentDatabaseVersion << " to " << Sink::latestDatabaseVersion(); |
67 | 67 | ||
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: | |||
63 | Pipeline::Pipeline(const ResourceContext &context, const Sink::Log::Context &ctx) : QObject(nullptr), d(new Private(context, ctx)) | 63 | Pipeline::Pipeline(const ResourceContext &context, const Sink::Log::Context &ctx) : QObject(nullptr), d(new Private(context, ctx)) |
64 | { | 64 | { |
65 | //Create main store immediately on first start | 65 | //Create main store immediately on first start |
66 | d->entityStore.startTransaction(DataStore::ReadWrite); | 66 | auto store = Sink::Storage::DataStore(Sink::storageLocation(), context.instanceId(), Sink::Storage::DataStore::ReadWrite); |
67 | d->entityStore.commitTransaction(); | 67 | auto t = store.createTransaction(Storage::DataStore::ReadWrite); |
68 | Storage::DataStore::setDatabaseVersion(t, Sink::latestDatabaseVersion()); | ||
68 | } | 69 | } |
69 | 70 | ||
70 | Pipeline::~Pipeline() | 71 | Pipeline::~Pipeline() |