]> source.dussan.org Git - nextcloud-server.git/commitdiff
Deduplicate version expire jobs
authorMorris Jobke <hey@morrisjobke.de>
Thu, 10 Dec 2015 10:21:28 +0000 (11:21 +0100)
committerMorris Jobke <hey@morrisjobke.de>
Thu, 10 Dec 2015 12:49:01 +0000 (13:49 +0100)
* 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

apps/files_versions/command/expire.php
apps/files_versions/lib/storage.php

index 4492497f851f1a86b926e3eb5204a9fb84c761b0..537e2e069241cb34e9f6d5dfc34b2b137b2a0ecc 100644 (file)
@@ -35,16 +35,6 @@ class Expire implements ICommand {
         */
        private $fileName;
 
-       /**
-        * @var int|null
-        */
-       private $versionsSize;
-
-       /**
-        * @var int
-        */
-       private $neededSpace = 0;
-
        /**
         * @var string
         */
@@ -53,14 +43,10 @@ class Expire implements ICommand {
        /**
         * @param string $user
         * @param string $fileName
-        * @param int|null $versionsSize
-        * @param int $neededSpace
         */
-       function __construct($user, $fileName, $versionsSize = null, $neededSpace = 0) {
+       function __construct($user, $fileName) {
                $this->user = $user;
                $this->fileName = $fileName;
-               $this->versionsSize = $versionsSize;
-               $this->neededSpace = $neededSpace;
        }
 
 
@@ -72,7 +58,7 @@ class Expire implements ICommand {
                }
 
                \OC_Util::setupFS($this->user);
-               Storage::expire($this->fileName, $this->versionsSize, $this->neededSpace);
+               Storage::expire($this->fileName);
                \OC_Util::tearDownFS();
        }
 }
index e0034f6165f5aa7d16d9893dc6fa1df627b86c4d..815f089d21b056aad43650b3ea7c0d13100b69fa 100644 (file)
@@ -152,14 +152,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);
@@ -537,11 +530,9 @@ 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) {
-               $command = new Expire($uid, $fileName, $versionsSize, $neededSpace);
+       private static function scheduleExpire($uid, $fileName) {
+               $command = new Expire($uid, $fileName);
                \OC::$server->getCommandBus()->push($command);
        }
 
@@ -549,11 +540,9 @@ class Storage {
         * Expire versions which exceed the quota
         *
         * @param $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();
                if($config->getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
                        list($uid, $filename) = self::getUidAndFilename($filename);
@@ -577,9 +566,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
@@ -588,12 +575,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;
                        }
 
                        $allVersions = Storage::getVersions($uid, $filename);