From 72f3882d4b405ad8035f795120f6c2e7a3dda174 Mon Sep 17 00:00:00 2001 From: Roeland Jago Douma Date: Wed, 5 Dec 2018 22:06:19 +0100 Subject: [PATCH] No need to propogate changes in appdata Right now we propogate a lof of changes in appdata. So for example we propogate each and every preview that is added to the system. This has no real added value as far as I can tell. Signed-off-by: Roeland Jago Douma --- lib/private/Files/Cache/Propagator.php | 15 ++++++++++++--- lib/private/Files/Storage/Common.php | 3 ++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/private/Files/Cache/Propagator.php b/lib/private/Files/Cache/Propagator.php index ae51b2e52d..7634029e73 100644 --- a/lib/private/Files/Cache/Propagator.php +++ b/lib/private/Files/Cache/Propagator.php @@ -46,12 +46,14 @@ class Propagator implements IPropagator { private $connection; /** - * @param \OC\Files\Storage\Storage $storage - * @param IDBConnection $connection + * @var array */ - public function __construct(\OC\Files\Storage\Storage $storage, IDBConnection $connection) { + private $ignore = []; + + public function __construct(\OC\Files\Storage\Storage $storage, IDBConnection $connection, array $ignore = []) { $this->storage = $storage; $this->connection = $connection; + $this->ignore = $ignore; } @@ -62,6 +64,13 @@ class Propagator implements IPropagator { * @suppress SqlInjectionChecker */ public function propagateChange($internalPath, $time, $sizeDifference = 0) { + // Do not propogate changes in ignored paths + foreach ($this->ignore as $ignore) { + if (strpos($internalPath, $ignore) === 0) { + return; + } + } + $storageId = (int)$this->storage->getStorageCache()->getNumericId(); $parents = $this->getParents($internalPath); diff --git a/lib/private/Files/Storage/Common.php b/lib/private/Files/Storage/Common.php index 72fe3a7979..657a8ba611 100644 --- a/lib/private/Files/Storage/Common.php +++ b/lib/private/Files/Storage/Common.php @@ -368,7 +368,8 @@ abstract class Common implements Storage, ILockingStorage, IWriteStreamStorage { $storage = $this; } if (!isset($storage->propagator)) { - $storage->propagator = new Propagator($storage, \OC::$server->getDatabaseConnection()); + $config = \OC::$server->getSystemConfig(); + $storage->propagator = new Propagator($storage, \OC::$server->getDatabaseConnection(), ['appdata_' . $config->getValue('instanceid')]); } return $storage->propagator; }