From 703b72511488068bdbc5e81172e674d0f07349ed Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 20 Jun 2016 01:24:17 +0200 Subject: Commit all databases in the same interval --- common/synchronizer.cpp | 10 ++++++---- common/synchronizer.h | 2 +- examples/imapresource/imapresource.cpp | 4 ---- examples/maildirresource/maildirresource.cpp | 4 ---- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/common/synchronizer.cpp b/common/synchronizer.cpp index cf50b0b..1374d00 100644 --- a/common/synchronizer.cpp +++ b/common/synchronizer.cpp @@ -240,24 +240,26 @@ void Synchronizer::modify(const DomainType &entity) KAsync::Job Synchronizer::synchronize() { Trace() << "Synchronizing"; + mSyncInProgress = true; mMessageQueue->startTransaction(); return synchronizeWithSource().then([this]() { mSyncStore.clear(); mEntityStore.clear(); mMessageQueue->commit(); + mSyncInProgress = false; }); } void Synchronizer::commit() { + mMessageQueue->commit(); mTransaction.abort(); mEntityStore.clear(); -} - -void Synchronizer::commitSync() -{ mSyncTransaction.commit(); mSyncStore.clear(); + if (mSyncInProgress) { + mMessageQueue->startTransaction(); + } } Sink::Storage::Transaction &Synchronizer::transaction() diff --git a/common/synchronizer.h b/common/synchronizer.h index 9c0e2e2..81d4f27 100644 --- a/common/synchronizer.h +++ b/common/synchronizer.h @@ -50,7 +50,6 @@ public: RemoteIdMap &syncStore(); void commit(); - void commitSync(); Sink::Storage::Transaction &transaction(); Sink::Storage::Transaction &syncTransaction(); @@ -106,6 +105,7 @@ private: Sink::Storage::Transaction mSyncTransaction; std::function mEnqueue; MessageQueue *mMessageQueue; + bool mSyncInProgress; }; } diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index f9168e4..b5d224c 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp @@ -251,7 +251,6 @@ public: createOrModify(bufferType, remoteId, mail); } - commitSync(); const auto elapsed = time->elapsed(); Log() << "Synchronized " << count << " mails in " << path << Sink::Log::TraceTime(elapsed) << " " << elapsed/qMax(count, 1) << " [ms/mail]"; } @@ -310,7 +309,6 @@ public: auto folderFuture = imap.fetchFolders([this, &imap, &folderList](const QVector &folders) { synchronizeFolders(folders); commit(); - commitSync(); folderList << folders; }).exec(); @@ -332,7 +330,6 @@ public: } synchronizeMails(folder.normalizedPath(), messages); commit(); - commitSync(); }).exec(); messagesFuture.waitForFinished(); if (messagesFuture.errorCode()) { @@ -342,7 +339,6 @@ public: //Remove what there is to remove synchronizeRemovals(folder.normalizedPath(), uids); commit(); - commitSync(); Trace() << "Folder synchronized: " << folder.normalizedPath(); } diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp index 5fa7084..23e25c4 100644 --- a/examples/maildirresource/maildirresource.cpp +++ b/examples/maildirresource/maildirresource.cpp @@ -393,7 +393,6 @@ public: createOrModify(bufferType, remoteId, mail); } - commitSync(); const auto elapsed = time->elapsed(); Log() << "Synchronized " << count << " mails in " << listingPath << Sink::Log::TraceTime(elapsed) << " " << elapsed/qMax(count, 1) << " [ms/mail]"; } @@ -409,12 +408,10 @@ public: synchronizeFolders(); //The next sync needs the folders available commit(); - commitSync(); for (const auto &folder : listAvailableFolders()) { synchronizeMails(folder); //Don't let the transaction grow too much commit(); - commitSync(); } Log() << "Done Synchronizing"; return KAsync::null(); @@ -515,7 +512,6 @@ MaildirResource::MaildirResource(const QByteArray &instanceIdentifier, const QSh auto remoteId = synchronizer->createFolder(mDraftsFolder, "folder", QByteArrayList() << "drafts"); auto draftsFolderLocalId = synchronizer->syncStore().resolveRemoteId(ENTITY_TYPE_FOLDER, remoteId); synchronizer->commit(); - synchronizer->commitSync(); folderUpdater->mDraftsFolder = draftsFolderLocalId; folderUpdater->mResourceInstanceIdentifier = mResourceInstanceIdentifier; -- cgit v1.2.3