summaryrefslogtreecommitdiffstats
path: root/common/store.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-07-12 16:06:12 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-07-12 16:06:12 +0200
commita867e3cdc35a4a3efc65c6ba292b62f3e1cbeb72 (patch)
tree53a9a3245cb22f0a1c9777833af60bbd3cf2cdad /common/store.cpp
parente7f9a6bf8f681daef1b4157bbac8670c47bd2120 (diff)
downloadsink-a867e3cdc35a4a3efc65c6ba292b62f3e1cbeb72.tar.gz
sink-a867e3cdc35a4a3efc65c6ba292b62f3e1cbeb72.zip
Wait for the resource shutdown during removeFromDisk
Otherwise we risk failing jobs if they are sent to the old resource.
Diffstat (limited to 'common/store.cpp')
-rw-r--r--common/store.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/common/store.cpp b/common/store.cpp
index d7b277d..848afae 100644
--- a/common/store.cpp
+++ b/common/store.cpp
@@ -191,7 +191,21 @@ KAsync::Job<void> Store::removeDataFromDisk(const QByteArray &identifier)
191 auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier)); 191 auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier));
192 resourceAccess->open(); 192 resourceAccess->open();
193 return resourceAccess->sendCommand(Sink::Commands::RemoveFromDiskCommand) 193 return resourceAccess->sendCommand(Sink::Commands::RemoveFromDiskCommand)
194 .then<void>([resourceAccess, time]() { SinkTrace() << "Remove from disk complete." << Log::TraceTime(time->elapsed()); }); 194 .then<void>([resourceAccess](KAsync::Future<void> &future) {
195 if (resourceAccess->isReady()) {
196 //Wait for the resource shutdown
197 QObject::connect(resourceAccess.data(), &ResourceAccess::ready, [&future](bool ready) {
198 if (!ready) {
199 future.setFinished();
200 }
201 });
202 } else {
203 future.setFinished();
204 }
205 })
206 .then<void>([resourceAccess, time]() {
207 SinkTrace() << "Remove from disk complete." << Log::TraceTime(time->elapsed());
208 });
195} 209}
196 210
197KAsync::Job<void> Store::synchronize(const Sink::Query &query) 211KAsync::Job<void> Store::synchronize(const Sink::Query &query)