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