Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2020-11-25 11:28:38 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2020-11-25 13:51:22 +0300
commit19678d182fac9c01569324212e9d643a4013cfc5 (patch)
tree2771e7c60e8d56aea29b1fae780dcd20601eb0ad
parente84701086ab6fff70c4de8f560c6c1ea8eae3058 (diff)
Catch storage not available in versions expire command
External storage with session credentials is not accessible without a user session, hence background jobs and CLI commands can't work with them. The previously unhandled exception causes logged errors in the nextcloud log. This patch catches the specific exception and logs it as warnings. So for a production instance the error won't spam their logs for this non-recoverable and technically unsolvable error if the minimum log level is set to the default of 3 (error). Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r--apps/files_versions/lib/Command/Expire.php18
1 files changed, 17 insertions, 1 deletions
diff --git a/apps/files_versions/lib/Command/Expire.php b/apps/files_versions/lib/Command/Expire.php
index 55f88aba688..723cc860fd0 100644
--- a/apps/files_versions/lib/Command/Expire.php
+++ b/apps/files_versions/lib/Command/Expire.php
@@ -28,6 +28,8 @@ namespace OCA\Files_Versions\Command;
use OC\Command\FileAccess;
use OCA\Files_Versions\Storage;
use OCP\Command\ICommand;
+use OCP\Files\StorageNotAvailableException;
+use OCP\ILogger;
class Expire implements ICommand {
use FileAccess;
@@ -59,6 +61,20 @@ class Expire implements ICommand {
return;
}
- Storage::expire($this->fileName, $this->user);
+ try {
+ Storage::expire($this->fileName, $this->user);
+ } catch (StorageNotAvailableException $e) {
+ // In case of external storage and session credentials, the expiration
+ // fails because the command does not have those credentials
+
+ /** @var ILogger $logger */
+ $logger = \OC::$server->query(ILogger::class);
+
+ $logger->logException($e, [
+ 'level' => ILogger::WARN,
+ 'uid' => $this->user,
+ 'fileName' => $this->fileName,
+ ]);
+ }
}
}