From aab33b8b0ef5ce690a830d3ed8e49c0ab8c1f1d1 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 10 Jul 2014 15:19:40 +0200 Subject: [PATCH] Remove deleted versions from the cache --- apps/files_versions/lib/versions.php | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 5035defd60b..2e048416c11 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -131,6 +131,23 @@ class Storage { 'filename' => $filename); } + /** + * delete the version from the storage and cache + * + * @param \OC\Files\View $view + * @param string $path + */ + protected static function deleteVersion($view, $path) { + $view->unlink($path); + /** + * @var \OC\Files\Storage\Storage $storage + * @var string $internalPath + */ + list($storage, $internalPath) = $view->resolvePath($path); + $cache = $storage->getCache($internalPath); + $cache->remove($internalPath); + } + /** * Delete versions of a file */ @@ -148,7 +165,7 @@ class Storage { if (!empty($versions)) { foreach ($versions as $v) { \OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path . $v['version'])); - $view->unlink($filename . '.v' . $v['version']); + self::deleteVersion($view, $filename . '.v' . $v['version']); \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path . $v['version'])); } } @@ -219,7 +236,7 @@ class Storage { return true; }else if ( $versionCreated ) { - $users_view->unlink($version); + self::deleteVersion($users_view, $version); } } return false; @@ -471,7 +488,7 @@ class Storage { foreach($toDelete as $key => $path) { \OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path)); - $versionsFileview->unlink($path); + self::deleteVersion($versionsFileview, $path); \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path)); unset($allVersions[$key]); // update array with the versions we keep \OCP\Util::writeLog('files_versions', "Expire: " . $path, \OCP\Util::DEBUG); @@ -485,7 +502,7 @@ class Storage { while ($availableSpace < 0 && $i < $numOfVersions) { $version = current($allVersions); \OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $version['path'].'.v'.$version['version'])); - $versionsFileview->unlink($version['path'].'.v'.$version['version']); + self::deleteVersion($versionsFileview, $version['path'] . '.v' . $version['version']); \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $version['path'].'.v'.$version['version'])); \OCP\Util::writeLog('files_versions', 'running out of space! Delete oldest version: ' . $version['path'].'.v'.$version['version'] , \OCP\Util::DEBUG); $versionsSize -= $version['size']; -- 2.39.5