Remove deleted versions from the cache

This commit is contained in:
Robin Appelman 2014-07-10 15:19:40 +02:00
parent 480f5ddda3
commit aab33b8b0e

View file

@ -131,6 +131,23 @@ class Storage {
'filename' => $filename); '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 * Delete versions of a file
*/ */
@ -148,7 +165,7 @@ class Storage {
if (!empty($versions)) { if (!empty($versions)) {
foreach ($versions as $v) { foreach ($versions as $v) {
\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $path . $v['version'])); \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'])); \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path . $v['version']));
} }
} }
@ -219,7 +236,7 @@ class Storage {
return true; return true;
}else if ( $versionCreated ) { }else if ( $versionCreated ) {
$users_view->unlink($version); self::deleteVersion($users_view, $version);
} }
} }
return false; return false;
@ -471,7 +488,7 @@ class Storage {
foreach($toDelete as $key => $path) { foreach($toDelete as $key => $path) {
\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $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)); \OC_Hook::emit('\OCP\Versions', 'delete', array('path' => $path));
unset($allVersions[$key]); // update array with the versions we keep unset($allVersions[$key]); // update array with the versions we keep
\OCP\Util::writeLog('files_versions', "Expire: " . $path, \OCP\Util::DEBUG); \OCP\Util::writeLog('files_versions', "Expire: " . $path, \OCP\Util::DEBUG);
@ -485,7 +502,7 @@ class Storage {
while ($availableSpace < 0 && $i < $numOfVersions) { while ($availableSpace < 0 && $i < $numOfVersions) {
$version = current($allVersions); $version = current($allVersions);
\OC_Hook::emit('\OCP\Versions', 'preDelete', array('path' => $version['path'].'.v'.$version['version'])); \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'])); \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); \OCP\Util::writeLog('files_versions', 'running out of space! Delete oldest version: ' . $version['path'].'.v'.$version['version'] , \OCP\Util::DEBUG);
$versionsSize -= $version['size']; $versionsSize -= $version['size'];