summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-03-26 11:24:57 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-03-26 11:24:57 +0200
commita0237dbe6fb904aac1338ecc1aae2dbe0900ac3f (patch)
tree6c00d48b8d7b07907e46b81649ff05d89667a0aa
parent0f6f34ca2fca81734544b32e8dbc8ee32122bb65 (diff)
downloadsink-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.cpp8
-rw-r--r--common/pipeline.cpp5
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
59bool GenericResource::checkForUpgrade() 59bool 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:
63Pipeline::Pipeline(const ResourceContext &context, const Sink::Log::Context &ctx) : QObject(nullptr), d(new Private(context, ctx)) 63Pipeline::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
70Pipeline::~Pipeline() 71Pipeline::~Pipeline()