diff options
author | Robin Appelman <robin@icewind.nl> | 2023-04-21 19:11:27 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-21 19:11:27 +0200 |
commit | 0ac7230b7f46c5bb3bca78aaf5dcec158e429ec6 (patch) | |
tree | b9c070bdd913f0a0e5b6c319b4817770f1e72808 /lib/private | |
parent | 7db4938701980ec10926358dc108c5da57b62b76 (diff) | |
parent | 4b52dafbf9dc043008efcdb8c08803988fbaab2d (diff) | |
download | nextcloud-server-0ac7230b7f46c5bb3bca78aaf5dcec158e429ec6.tar.gz nextcloud-server-0ac7230b7f46c5bb3bca78aaf5dcec158e429ec6.zip |
Merge pull request #37820 from nextcloud/parent-storage-mtime-ignore-error
ignore errors while trying to update parent storage_mtime
Diffstat (limited to 'lib/private')
-rw-r--r-- | lib/private/Files/Cache/Updater.php | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/private/Files/Cache/Updater.php b/lib/private/Files/Cache/Updater.php index f8c187996e6..d94cff0685d 100644 --- a/lib/private/Files/Cache/Updater.php +++ b/lib/private/Files/Cache/Updater.php @@ -27,10 +27,12 @@ */ namespace OC\Files\Cache; +use OC\DB\Exceptions\DbalException; use OC\Files\FileInfo; use OCP\Files\Cache\ICacheEntry; use OCP\Files\Cache\IUpdater; use OCP\Files\Storage\IStorage; +use Psr\Log\LoggerInterface; /** * Update the cache and propagate changes @@ -62,6 +64,8 @@ class Updater implements IUpdater { */ protected $cache; + private LoggerInterface $logger; + /** * @param \OC\Files\Storage\Storage $storage */ @@ -70,6 +74,7 @@ class Updater implements IUpdater { $this->propagator = $storage->getPropagator(); $this->scanner = $storage->getScanner(); $this->cache = $storage->getCache(); + $this->logger = \OC::$server->get(LoggerInterface::class); } /** @@ -253,7 +258,14 @@ class Updater implements IUpdater { if ($parentId != -1) { $mtime = $this->storage->filemtime($parent); if ($mtime !== false) { - $this->cache->update($parentId, ['storage_mtime' => $mtime]); + try { + $this->cache->update($parentId, ['storage_mtime' => $mtime]); + } catch (DbalException $e) { + // ignore the failure. + // with failures concurrent updates, someone else would have already done it. + // in the worst case the `storage_mtime` isn't updated, which should at most only trigger an extra rescan + $this->logger->warning("Error while updating parent storage_mtime, should be safe to ignore", ['exception' => $e]); + } } } } |