[Pkg-owncloud-commits] [owncloud] 10/59: Remove deleted versions from the cache

David Prévot taffit at moszumanska.debian.org
Fri Jul 18 16:19:24 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 9d3336002b5e74ccb9eb76a8545c8485bd65d7b9
Author: Robin Appelman <icewind at owncloud.com>
Date:   Thu Jul 10 15:19:40 2014 +0200

    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 5035def..2e04841 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -132,6 +132,23 @@ class Storage {
 	}
 
 	/**
+	 * 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
 	 */
 	public static function delete($path) {
@@ -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'];

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list