mirror of
https://github.com/nextcloud/server.git
synced 2026-02-20 00:12:30 -05:00
fix(workflows): Fix file systemtag cache
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
43fa5b6c54
commit
fabea78890
1 changed files with 9 additions and 21 deletions
|
|
@ -26,6 +26,7 @@
|
|||
*/
|
||||
namespace OCA\WorkflowEngine\Check;
|
||||
|
||||
use OC\Files\Storage\Wrapper\Jail;
|
||||
use OCA\Files_Sharing\SharedStorage;
|
||||
use OCA\WorkflowEngine\Entity\File;
|
||||
use OCP\Files\Cache\ICache;
|
||||
|
|
@ -39,7 +40,6 @@ use OCP\SystemTag\ISystemTagObjectMapper;
|
|||
use OCP\SystemTag\TagNotFoundException;
|
||||
use OCP\WorkflowEngine\ICheck;
|
||||
use OCP\WorkflowEngine\IFileCheck;
|
||||
use OC\Files\Storage\Wrapper\Wrapper;
|
||||
|
||||
class FileSystemTags implements ICheck, IFileCheck {
|
||||
use TFileCheck;
|
||||
|
|
@ -154,27 +154,15 @@ class FileSystemTags implements ICheck, IFileCheck {
|
|||
* @return int[]
|
||||
*/
|
||||
protected function getFileIds(ICache $cache, $path, $isExternalStorage) {
|
||||
/** @psalm-suppress InvalidArgument */
|
||||
if ($this->storage->instanceOfStorage(\OCA\GroupFolders\Mount\GroupFolderStorage::class)) {
|
||||
// Special implementation for groupfolder since all groupfolders share the same storage
|
||||
// id so add the group folder id in the cache key too.
|
||||
$groupFolderStorage = $this->storage;
|
||||
if ($this->storage instanceof Wrapper) {
|
||||
$groupFolderStorage = $this->storage->getInstanceOfStorage(\OCA\GroupFolders\Mount\GroupFolderStorage::class);
|
||||
}
|
||||
if ($groupFolderStorage === null) {
|
||||
throw new \LogicException('Should not happen: Storage is instance of GroupFolderStorage but no group folder storage found while unwrapping.');
|
||||
}
|
||||
/**
|
||||
* @psalm-suppress UndefinedDocblockClass
|
||||
* @psalm-suppress UndefinedInterfaceMethod
|
||||
*/
|
||||
$cacheId = $cache->getNumericStorageId() . '/' . $groupFolderStorage->getFolderId();
|
||||
$cacheId = $cache->getNumericStorageId();
|
||||
if ($this->storage->instanceOfStorage(Jail::class)) {
|
||||
$absolutePath = $this->storage->getUnjailedPath($path);
|
||||
} else {
|
||||
$cacheId = $cache->getNumericStorageId();
|
||||
$absolutePath = $path;
|
||||
}
|
||||
if (isset($this->fileIds[$cacheId][$path])) {
|
||||
return $this->fileIds[$cacheId][$path];
|
||||
|
||||
if (isset($this->fileIds[$cacheId][$absolutePath])) {
|
||||
return $this->fileIds[$cacheId][$absolutePath];
|
||||
}
|
||||
|
||||
$parentIds = [];
|
||||
|
|
@ -189,7 +177,7 @@ class FileSystemTags implements ICheck, IFileCheck {
|
|||
$parentIds[] = $fileId;
|
||||
}
|
||||
|
||||
$this->fileIds[$cacheId][$path] = $parentIds;
|
||||
$this->fileIds[$cacheId][$absolutePath] = $parentIds;
|
||||
|
||||
return $parentIds;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue