зеркало из https://github.com/nextcloud/desktop.git
Don't crash when the same request is filled twice
The OS might request the same file again if we take too much time to fulfill a request. So in case it's queueing the same one again instead of bailing out just fail the second one and let the first one finish properly. Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
This commit is contained in:
Родитель
d3c7218ee8
Коммит
21035d48a6
|
@ -307,9 +307,15 @@ void VfsCfApi::fileStatusChanged(const QString &systemFileName, SyncFileStatus f
|
||||||
|
|
||||||
void VfsCfApi::scheduleHydrationJob(const QString &requestId, const QString &folderPath)
|
void VfsCfApi::scheduleHydrationJob(const QString &requestId, const QString &folderPath)
|
||||||
{
|
{
|
||||||
Q_ASSERT(std::none_of(std::cbegin(d->hydrationJobs), std::cend(d->hydrationJobs), [=](HydrationJob *job) {
|
const auto jobAlreadyScheduled = std::any_of(std::cbegin(d->hydrationJobs), std::cend(d->hydrationJobs), [=](HydrationJob *job) {
|
||||||
return job->requestId() == requestId || job->folderPath() == folderPath;
|
return job->requestId() == requestId || job->folderPath() == folderPath;
|
||||||
}));
|
});
|
||||||
|
|
||||||
|
if (jobAlreadyScheduled) {
|
||||||
|
qCWarning(lcCfApi) << "The OS submitted again a hydration request which is already on-going" << requestId << folderPath;
|
||||||
|
emit hydrationRequestFailed(requestId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (d->hydrationJobs.isEmpty()) {
|
if (d->hydrationJobs.isEmpty()) {
|
||||||
emit beginHydrating();
|
emit beginHydrating();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче