diff --git a/lib/Service/DocumentService.php b/lib/Service/DocumentService.php index 467dc4c807b..73eb536887f 100644 --- a/lib/Service/DocumentService.php +++ b/lib/Service/DocumentService.php @@ -293,6 +293,15 @@ public function autosave($file, $documentId, $version, $autoaveDocument, $force $savedEtag = $file->getEtag(); $lastMTime = $document->getLastSavedVersionTime(); + if ($lastMTime > 0 && $savedEtag !== $document->getLastSavedVersionEtag() && $force === false) { + if (!$this->cache->get('document-save-lock-' . $documentId)) { + throw new DocumentSaveConflictException('File changed in the meantime from outside'); + } else { + // Only return here if the document is locked, otherwise we can continue to save + return $document; + } + } + if ($autoaveDocument === null) { return $document; } @@ -305,13 +314,6 @@ public function autosave($file, $documentId, $version, $autoaveDocument, $force if ($file->getMTime() === $lastMTime && $lastMTime > time() - self::AUTOSAVE_MINIMUM_DELAY && $manualSave === false) { return $document; } - if ($lastMTime > 0 && $savedEtag !== $document->getLastSavedVersionEtag() && $force === false) { - if (!$this->cache->get('document-save-lock-' . $documentId)) { - throw new DocumentSaveConflictException('File changed in the meantime from outside'); - } else { - return $document; - } - } $this->cache->set('document-save-lock-' . $documentId, true, 10); try { $file->putContent($autoaveDocument);