From 64d7d7bdd1edb2bcc305ca007784d0708cf7ef3c Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 24 Nov 2016 09:57:34 +0100 Subject: Deal with not using the implicit internal transaction. --- common/storage/entitystore.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'common/storage/entitystore.cpp') diff --git a/common/storage/entitystore.cpp b/common/storage/entitystore.cpp index 79314ad..f6b8f43 100644 --- a/common/storage/entitystore.cpp +++ b/common/storage/entitystore.cpp @@ -307,7 +307,7 @@ void EntityStore::cleanupRevision(qint64 revision) DataStore::setCleanedUpRevision(d->transaction, revision); } -void EntityStore::cleanupRevisions(qint64 revision) +bool EntityStore::cleanupRevisions(qint64 revision) { bool implicitTransaction = false; if (!d->transaction) { @@ -315,13 +315,18 @@ void EntityStore::cleanupRevisions(qint64 revision) implicitTransaction = true; } const auto lastCleanRevision = DataStore::cleanedUpRevision(d->transaction); - SinkTrace() << "Cleaning up from " << lastCleanRevision + 1 << " to " << revision; - for (qint64 rev = lastCleanRevision + 1; rev <= revision; rev++) { - cleanupRevision(revision); + const auto firstRevisionToCleanup = lastCleanRevision + 1; + bool cleanupIsNecessary = firstRevisionToCleanup <= revision; + if (cleanupIsNecessary) { + SinkTrace() << "Cleaning up from " << firstRevisionToCleanup << " to " << revision; + for (qint64 rev = firstRevisionToCleanup; rev <= revision; rev++) { + cleanupRevision(revision); + } } if (implicitTransaction) { commitTransaction(); } + return cleanupIsNecessary; } QVector EntityStore::fullScan(const QByteArray &type) -- cgit v1.2.3