summaryrefslogtreecommitdiffstats
path: root/apps/files_versions/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2015-12-10 11:21:28 +0100
committerMorris Jobke <hey@morrisjobke.de>2015-12-10 11:21:28 +0100
commitfb87441fd9c3ff8300c03966a977573601450ad2 (patch)
tree673a2981c8e5a6a136f81846fbe9a5c89fd7076b /apps/files_versions/lib
parent75c3d646350d03d113ba6565603ce77d1226cef3 (diff)
downloadnextcloud-server-fb87441fd9c3ff8300c03966a977573601450ad2.tar.gz
nextcloud-server-fb87441fd9c3ff8300c03966a977573601450ad2.zip
Deduplicate version expire jobs
* versionSize is calculated anyway in the expire job - > dropped * offset/neededSpace was needed for expiry before the file is moved to the versions -> now this is included already in the currently used space because the expiry job is defered to a point in time after the version creation * fixes #21108
Diffstat (limited to 'apps/files_versions/lib')
-rw-r--r--apps/files_versions/lib/storage.php29
1 files changed, 8 insertions, 21 deletions
diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index 29876b3e38a..21b5e9e0e7b 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -168,14 +168,7 @@ class Storage {
// create all parent folders
self::createMissingDirectories($filename, $users_view);
- $versionsSize = self::getVersionsSize($uid);
-
- // assumption: we need filesize($filename) for the new version +
- // some more free space for the modified file which might be
- // 1.5 times as large as the current version -> 2.5
- $neededSpace = $files_view->filesize($filename) * 2.5;
-
- self::scheduleExpire($uid, $filename, $versionsSize, $neededSpace);
+ self::scheduleExpire($uid, $filename);
// store a new version of a file
$mtime = $users_view->filemtime('files/' . $filename);
@@ -634,14 +627,12 @@ class Storage {
*
* @param string $uid owner of the file
* @param string $fileName file/folder for which to schedule expiration
- * @param int|null $versionsSize current versions size
- * @param int $neededSpace requested versions size
*/
- private static function scheduleExpire($uid, $fileName, $versionsSize = null, $neededSpace = 0) {
+ private static function scheduleExpire($uid, $fileName) {
// let the admin disable auto expire
$expiration = self::getExpiration();
if ($expiration->isEnabled()) {
- $command = new Expire($uid, $fileName, $versionsSize, $neededSpace);
+ $command = new Expire($uid, $fileName);
\OC::$server->getCommandBus()->push($command);
}
}
@@ -650,11 +641,9 @@ class Storage {
* Expire versions which exceed the quota
*
* @param string $filename
- * @param int|null $versionsSize
- * @param int $offset
* @return bool|int|null
*/
- public static function expire($filename, $versionsSize = null, $offset = 0) {
+ public static function expire($filename) {
$config = \OC::$server->getConfig();
$expiration = self::getExpiration();
@@ -680,9 +669,7 @@ class Storage {
}
// make sure that we have the current size of the version history
- if ( $versionsSize === null ) {
- $versionsSize = self::getVersionsSize($uid);
- }
+ $versionsSize = self::getVersionsSize($uid);
// calculate available space for version history
// subtract size of files and current versions size from quota
@@ -692,12 +679,12 @@ class Storage {
$rootInfo = $files_view->getFileInfo('/', false);
$free = $quota - $rootInfo['size']; // remaining free space for user
if ($free > 0) {
- $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - ($versionsSize + $offset); // how much space can be used for versions
+ $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions
} else {
- $availableSpace = $free - $versionsSize - $offset;
+ $availableSpace = $free - $versionsSize;
}
} else {
- $availableSpace = $quota - $offset;
+ $availableSpace = $quota;
}
} else {
$availableSpace = PHP_INT_MAX;