From 5e0e41dfc6ef65a04c7b0d6c72386ed1beb3c321 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Mon, 26 Jun 2017 14:21:57 +0200 Subject: [PATCH] Scanner repairs invalid path Whenever the path doesn't match the parent/child relationship, the path value is corrected in the oc_filecache table. --- lib/private/Files/Cache/Scanner.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/private/Files/Cache/Scanner.php b/lib/private/Files/Cache/Scanner.php index 5130676cf849..57dc9a8c39dd 100644 --- a/lib/private/Files/Cache/Scanner.php +++ b/lib/private/Files/Cache/Scanner.php @@ -194,8 +194,22 @@ public function scanFile($file, $reuseExisting = 0, $parentId = -1, $cacheData = $data['etag'] = $etag; } } + + // check if path / parent is inconsistent + if ($file !== $cacheData['path']) { + // fix path + \OCP\Util::writeLog( + 'core', + 'Repairing inconsistent file cache entry found for file id ' . $fileId . ', ' . + 'path was "' . $cacheData['path'] . ' instead of "' . $file . '"', + \OCP\Util::WARN + ); + $data['path'] = $file; + } + // Only update metadata that has changed $newData = array_diff_assoc($data, $cacheData->getData()); + } else { $newData = $data; $fileId = -1;