aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2023-04-21 19:11:27 +0200
committerGitHub <noreply@github.com>2023-04-21 19:11:27 +0200
commit0ac7230b7f46c5bb3bca78aaf5dcec158e429ec6 (patch)
treeb9c070bdd913f0a0e5b6c319b4817770f1e72808 /lib/private
parent7db4938701980ec10926358dc108c5da57b62b76 (diff)
parent4b52dafbf9dc043008efcdb8c08803988fbaab2d (diff)
downloadnextcloud-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.php14
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]);
+ }
}
}
}