diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-01-23 11:17:35 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-01-23 11:25:24 +0100 |
commit | 3356db6f1fe75f39a5f6038e94e5af4b5e99f138 (patch) | |
tree | 93976d1eb8879a1b9966d491a1ecd25a70540ae0 /common/storage/entitystore.cpp | |
parent | 6003ae63e45485d1f1c76ea378900bc5242465cd (diff) | |
download | sink-3356db6f1fe75f39a5f6038e94e5af4b5e99f138.tar.gz sink-3356db6f1fe75f39a5f6038e94e5af4b5e99f138.zip |
Ensure we don't accidentally spawn more transactions than necessary.
Diffstat (limited to 'common/storage/entitystore.cpp')
-rw-r--r-- | common/storage/entitystore.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/common/storage/entitystore.cpp b/common/storage/entitystore.cpp index 6c341e2..51e5da7 100644 --- a/common/storage/entitystore.cpp +++ b/common/storage/entitystore.cpp | |||
@@ -111,6 +111,7 @@ EntityStore::EntityStore(const ResourceContext &context, const Log::Context &ctx | |||
111 | void EntityStore::startTransaction(Sink::Storage::DataStore::AccessMode accessMode) | 111 | void EntityStore::startTransaction(Sink::Storage::DataStore::AccessMode accessMode) |
112 | { | 112 | { |
113 | SinkTraceCtx(d->logCtx) << "Starting transaction: " << accessMode; | 113 | SinkTraceCtx(d->logCtx) << "Starting transaction: " << accessMode; |
114 | Q_ASSERT(!d->transaction); | ||
114 | Sink::Storage::DataStore store(Sink::storageLocation(), d->resourceContext.instanceId(), accessMode); | 115 | Sink::Storage::DataStore store(Sink::storageLocation(), d->resourceContext.instanceId(), accessMode); |
115 | d->transaction = store.createTransaction(accessMode); | 116 | d->transaction = store.createTransaction(accessMode); |
116 | Q_ASSERT(d->transaction.validateNamedDatabases()); | 117 | Q_ASSERT(d->transaction.validateNamedDatabases()); |
@@ -119,6 +120,7 @@ void EntityStore::startTransaction(Sink::Storage::DataStore::AccessMode accessMo | |||
119 | void EntityStore::commitTransaction() | 120 | void EntityStore::commitTransaction() |
120 | { | 121 | { |
121 | SinkTraceCtx(d->logCtx) << "Committing transaction"; | 122 | SinkTraceCtx(d->logCtx) << "Committing transaction"; |
123 | Q_ASSERT(d->transaction); | ||
122 | d->transaction.commit(); | 124 | d->transaction.commit(); |
123 | d->transaction = Storage::DataStore::Transaction(); | 125 | d->transaction = Storage::DataStore::Transaction(); |
124 | } | 126 | } |
@@ -130,6 +132,11 @@ void EntityStore::abortTransaction() | |||
130 | d->transaction = Storage::DataStore::Transaction(); | 132 | d->transaction = Storage::DataStore::Transaction(); |
131 | } | 133 | } |
132 | 134 | ||
135 | bool EntityStore::hasTransaction() const | ||
136 | { | ||
137 | return d->transaction; | ||
138 | } | ||
139 | |||
133 | void EntityStore::copyBlobs(ApplicationDomain::ApplicationDomainType &entity, qint64 newRevision) | 140 | void EntityStore::copyBlobs(ApplicationDomain::ApplicationDomainType &entity, qint64 newRevision) |
134 | { | 141 | { |
135 | const auto directory = d->entityBlobStoragePath(entity.identifier()); | 142 | const auto directory = d->entityBlobStoragePath(entity.identifier()); |