diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-12 16:06:12 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-12 16:06:12 +0200 |
commit | a867e3cdc35a4a3efc65c6ba292b62f3e1cbeb72 (patch) | |
tree | 53a9a3245cb22f0a1c9777833af60bbd3cf2cdad /common/store.cpp | |
parent | e7f9a6bf8f681daef1b4157bbac8670c47bd2120 (diff) | |
download | sink-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.cpp | 16 |
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 | ||
197 | KAsync::Job<void> Store::synchronize(const Sink::Query &query) | 211 | KAsync::Job<void> Store::synchronize(const Sink::Query &query) |