[Pkg-owncloud-commits] [owncloud] 37/86: Deduplicate queued trashbin expire jobs

David Prévot taffit at moszumanska.debian.org
Tue Dec 22 16:51:57 UTC 2015


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

taffit pushed a commit to annotated tag v8.1.5
in repository owncloud.

commit df6344211ee012be4dba30cf2cf54caaca37d95c
Author: Morris Jobke <hey at morrisjobke.de>
Date:   Fri Nov 27 14:01:03 2015 +0100

    Deduplicate queued trashbin expire jobs
    
    * fixes #20425
    * this removes the argument trashbin size from the expire job - it is now
      calculated in the expire job
    * the queue now detects properly that the job is already queue and doesn't
      add it again
---
 apps/files_trashbin/command/expire.php           | 11 ++---------
 apps/files_trashbin/lib/trashbin.php             | 25 +++++++++---------------
 apps/files_trashbin/tests/command/expiretest.php |  2 +-
 3 files changed, 12 insertions(+), 26 deletions(-)

diff --git a/apps/files_trashbin/command/expire.php b/apps/files_trashbin/command/expire.php
index 89b949b..b6eb2a7 100644
--- a/apps/files_trashbin/command/expire.php
+++ b/apps/files_trashbin/command/expire.php
@@ -38,17 +38,10 @@ class Expire implements ICommand {
 	private $user;
 
 	/**
-	 * @var int
-	 */
-	private $trashBinSize;
-
-	/**
 	 * @param string $user
-	 * @param int $trashBinSize
 	 */
-	function __construct($user, $trashBinSize) {
+	function __construct($user) {
 		$this->user = $user;
-		$this->trashBinSize = $trashBinSize;
 	}
 
 	public function handle() {
@@ -60,7 +53,7 @@ class Expire implements ICommand {
 
 		\OC_Util::tearDownFS();
 		\OC_Util::setupFS($this->user);
-		Trashbin::expire($this->trashBinSize, $this->user);
+		Trashbin::expire($this->user);
 		\OC_Util::tearDownFS();
 	}
 }
diff --git a/apps/files_trashbin/lib/trashbin.php b/apps/files_trashbin/lib/trashbin.php
index 668a3c5..0f556a0 100644
--- a/apps/files_trashbin/lib/trashbin.php
+++ b/apps/files_trashbin/lib/trashbin.php
@@ -175,7 +175,6 @@ class Trashbin {
 		// get the user for which the filesystem is setup
 		$root = Filesystem::getRoot();
 		list(, $user) = explode('/', $root);
-		$size = 0;
 		list($owner, $ownerPath) = self::getUidAndFilename($file_path);
 
 		$view = new \OC\Files\View('/' . $user);
@@ -196,8 +195,6 @@ class Trashbin {
 		$location = $path_parts['dirname'];
 		$timestamp = time();
 
-		$userTrashSize = self::getTrashbinSize($user);
-
 		// disable proxy to prevent recursive calls
 		$trashPath = '/files_trashbin/files/' . $filename . '.d' . $timestamp;
 
@@ -227,7 +224,6 @@ class Trashbin {
 		$view->getUpdater()->rename('/files/' . $file_path, $trashPath);
 
 		if ($sizeOfAddedFiles !== false) {
-			$size = $sizeOfAddedFiles;
 			$query = \OC_DB::prepare("INSERT INTO `*PREFIX*files_trash` (`id`,`timestamp`,`location`,`user`) VALUES (?,?,?,?)");
 			$result = $query->execute(array($filename, $timestamp, $location, $user));
 			if (!$result) {
@@ -236,7 +232,7 @@ class Trashbin {
 			\OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_moveToTrash', array('filePath' => \OC\Files\Filesystem::normalizePath($file_path),
 				'trashPath' => \OC\Files\Filesystem::normalizePath($filename . '.d' . $timestamp)));
 
-			$size += self::retainVersions($file_path, $filename, $owner, $ownerPath, $timestamp);
+			self::retainVersions($file_path, $filename, $owner, $ownerPath, $timestamp);
 
 			// if owner !== user we need to also add a copy to the owners trash
 			if ($user !== $owner) {
@@ -244,14 +240,11 @@ class Trashbin {
 			}
 		}
 
-		$userTrashSize += $size;
-		self::scheduleExpire($userTrashSize, $user);
+		self::scheduleExpire($user);
 
 		// if owner !== user we also need to update the owners trash size
 		if ($owner !== $user) {
-			$ownerTrashSize = self::getTrashbinSize($owner);
-			$ownerTrashSize += $size;
-			self::scheduleExpire($ownerTrashSize, $owner);
+			self::scheduleExpire($owner);
 		}
 
 		return ($sizeOfAddedFiles === false) ? false : true;
@@ -617,17 +610,17 @@ class Trashbin {
 		$freeSpace = self::calculateFreeSpace($size, $user);
 
 		if ($freeSpace < 0) {
-			self::scheduleExpire($size, $user);
+			self::scheduleExpire($user);
 		}
 	}
 
 	/**
 	 * clean up the trash bin
 	 *
-	 * @param int $trashBinSize current size of the trash bin
 	 * @param string $user
 	 */
-	public static function expire($trashBinSize, $user) {
+	public static function expire($user) {
+		$trashBinSize = self::getTrashbinSize($user);
 		$availableSpace = self::calculateFreeSpace($trashBinSize, $user);
 		$size = 0;
 
@@ -647,16 +640,16 @@ class Trashbin {
 		$size += self::deleteFiles(array_slice($dirContent, $count), $user, $availableSpace);
 	}
 
-	/**@param int $trashBinSize current size of the trash bin
+	/**
 	 * @param string $user
 	 */
-	private static function scheduleExpire($trashBinSize, $user) {
+	private static function scheduleExpire($user) {
 		// let the admin disable auto expire
 		$autoExpire = \OC_Config::getValue('trashbin_auto_expire', true);
 		if ($autoExpire === false) {
 			return;
 		}
-		\OC::$server->getCommandBus()->push(new Expire($user, $trashBinSize));
+		\OC::$server->getCommandBus()->push(new Expire($user));
 	}
 
 	/**
diff --git a/apps/files_trashbin/tests/command/expiretest.php b/apps/files_trashbin/tests/command/expiretest.php
index a6a8a6d..0d457db 100644
--- a/apps/files_trashbin/tests/command/expiretest.php
+++ b/apps/files_trashbin/tests/command/expiretest.php
@@ -26,7 +26,7 @@ use Test\TestCase;
 
 class ExpireTest extends TestCase {
 	public function testExpireNonExistingUser() {
-		$command = new Expire('test', 0);
+		$command = new Expire('test');
 		$command->handle();
 
 		$this->assertTrue(true);

-- 
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