From a867e3cdc35a4a3efc65c6ba292b62f3e1cbeb72 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 12 Jul 2016 16:06:12 +0200 Subject: Wait for the resource shutdown during removeFromDisk Otherwise we risk failing jobs if they are sent to the old resource. --- common/store.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'common') 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 Store::removeDataFromDisk(const QByteArray &identifier) auto resourceAccess = ResourceAccessFactory::instance().getAccess(identifier, ResourceConfig::getResourceType(identifier)); resourceAccess->open(); return resourceAccess->sendCommand(Sink::Commands::RemoveFromDiskCommand) - .then([resourceAccess, time]() { SinkTrace() << "Remove from disk complete." << Log::TraceTime(time->elapsed()); }); + .then([resourceAccess](KAsync::Future &future) { + if (resourceAccess->isReady()) { + //Wait for the resource shutdown + QObject::connect(resourceAccess.data(), &ResourceAccess::ready, [&future](bool ready) { + if (!ready) { + future.setFinished(); + } + }); + } else { + future.setFinished(); + } + }) + .then([resourceAccess, time]() { + SinkTrace() << "Remove from disk complete." << Log::TraceTime(time->elapsed()); + }); } KAsync::Job Store::synchronize(const Sink::Query &query) -- cgit v1.2.3