diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-11-04 22:40:17 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-11-04 22:40:17 +0100 |
commit | ba02a3771b798cc05d63e0ac1a2d919cb96ce455 (patch) | |
tree | 70c5437d105d64cb1a2a70082f9016a7941fd34c /apps/files_sharing | |
parent | 05359e384e7b33b6928ab239f4d7f518d250c236 (diff) | |
parent | a2cfbd975ae0695e391c45969fd0e418b9580e72 (diff) | |
download | nextcloud-server-ba02a3771b798cc05d63e0ac1a2d919cb96ce455.tar.gz nextcloud-server-ba02a3771b798cc05d63e0ac1a2d919cb96ce455.zip |
Merge pull request #20053 from owncloud/getfileinfo-locking
Don't lock if we're only reading cache metadata
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/lib/watcher.php | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/apps/files_sharing/lib/watcher.php b/apps/files_sharing/lib/watcher.php index dc95dde480e..3af6f733b51 100644 --- a/apps/files_sharing/lib/watcher.php +++ b/apps/files_sharing/lib/watcher.php @@ -29,41 +29,41 @@ namespace OC\Files\Cache; * check the storage backends for updates and change the cache accordingly */ class Shared_Watcher extends Watcher { + /** + * @var \OC\Files\Storage\Shared $storage + */ + protected $storage; /** - * check $path for updates + * Update the cache for changes to $path * * @param string $path - * @param array $cachedEntry - * @return boolean true if path was updated + * @param array $cachedData */ - public function checkUpdate($path, $cachedEntry = null) { - if (parent::checkUpdate($path, $cachedEntry) === true) { - // since checkUpdate() has already updated the size of the subdirs, - // only apply the update to the owner's parent dirs - - // find last parent before reaching the shared storage root, - // which is the actual shared dir from the owner - $sepPos = strpos($path, '/'); - if ($sepPos > 0) { - $baseDir = substr($path, 0, $sepPos); - } else { - $baseDir = $path; - } + public function update($path, $cachedData) { + parent::update($path, $cachedData); + // since parent::update() has already updated the size of the subdirs, + // only apply the update to the owner's parent dirs - // find the path relative to the data dir - $file = $this->storage->getFile($baseDir); - $view = new \OC\Files\View('/' . $file['fileOwner']); + // find last parent before reaching the shared storage root, + // which is the actual shared dir from the owner + $sepPos = strpos($path, '/'); + if ($sepPos > 0) { + $baseDir = substr($path, 0, $sepPos); + } else { + $baseDir = $path; + } - // find the owner's storage and path - list($storage, $internalPath) = $view->resolvePath($file['path']); + // find the path relative to the data dir + $file = $this->storage->getFile($baseDir); + $view = new \OC\Files\View('/' . $file['fileOwner']); - // update the parent dirs' sizes in the owner's cache - $storage->getCache()->correctFolderSize(dirname($internalPath)); + // find the owner's storage and path + /** @var \OC\Files\Storage\Storage $storage */ + list($storage, $internalPath) = $view->resolvePath($file['path']); - return true; - } - return false; + // update the parent dirs' sizes in the owner's cache + $storage->getCache()->correctFolderSize(dirname($internalPath)); } /** |