From 3356db6f1fe75f39a5f6038e94e5af4b5e99f138 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 23 Jan 2017 11:17:35 +0100 Subject: Ensure we don't accidentally spawn more transactions than necessary. --- common/synchronizer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'common/synchronizer.cpp') diff --git a/common/synchronizer.cpp b/common/synchronizer.cpp index f731b31..3cd0cb6 100644 --- a/common/synchronizer.cpp +++ b/common/synchronizer.cpp @@ -62,7 +62,7 @@ void Synchronizer::enqueueCommand(int commandId, const QByteArray &data) Storage::EntityStore &Synchronizer::store() { - mEntityStore->startTransaction(Sink::Storage::DataStore::ReadOnly); + Q_ASSERT(mEntityStore->hasTransaction()); return *mEntityStore; } @@ -385,11 +385,13 @@ KAsync::Job Synchronizer::processSyncQueue() const auto request = mSyncRequestQueue.takeFirst(); return KAsync::syncStart([this] { mMessageQueue->startTransaction(); + mEntityStore->startTransaction(Sink::Storage::DataStore::ReadOnly); mSyncInProgress = true; }) .then(processRequest(request)) .then([this](const KAsync::Error &error) { SinkTraceCtx(mLogCtx) << "Sync request processed"; + mEntityStore->abortTransaction(); mSyncTransaction.abort(); mMessageQueue->commit(); mSyncStore.clear(); @@ -409,7 +411,6 @@ KAsync::Job Synchronizer::processSyncQueue() void Synchronizer::commit() { mMessageQueue->commit(); - mEntityStore->abortTransaction(); mSyncTransaction.commit(); mSyncStore.clear(); if (mSyncInProgress) { @@ -472,7 +473,8 @@ KAsync::Job Synchronizer::replay(const QByteArray &type, const QByteArray Q_ASSERT(metadataBuffer); Q_ASSERT(!mSyncStore); Q_ASSERT(!mSyncTransaction); - mEntityStore->startTransaction(Storage::DataStore::ReadOnly); + //The entitystore transaction is handled by processSyncQueue + Q_ASSERT(mEntityStore->hasTransaction()); const auto operation = metadataBuffer ? metadataBuffer->operation() : Sink::Operation_Creation; const auto uid = Sink::Storage::DataStore::uidFromKey(key); @@ -525,7 +527,6 @@ KAsync::Job Synchronizer::replay(const QByteArray &type, const QByteArray } mSyncStore.clear(); mSyncTransaction.commit(); - mEntityStore->abortTransaction(); }); } -- cgit v1.2.3