diff options
author | Christoph Wurst <ChristophWurst@users.noreply.github.com> | 2021-11-30 12:53:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-30 12:53:52 +0100 |
commit | 2c3cf86ad31e20504bea39bad0bf912e946e2c5e (patch) | |
tree | 00a6e520e647fd4ef8b28c0bb57651fbcf4a17f0 | |
parent | d66e8816bfaa3572a007f6ec1bb98173b5ce042b (diff) | |
parent | f6b5b1f51945ef083b893ac7a81428603381c1b7 (diff) | |
download | nextcloud-server-2c3cf86ad31e20504bea39bad0bf912e946e2c5e.tar.gz nextcloud-server-2c3cf86ad31e20504bea39bad0bf912e946e2c5e.zip |
Merge pull request #29974 from nextcloud/fix/repair-step-query-exception-bubble
Let repair step query exceptions bubble up
-rw-r--r-- | lib/private/Repair.php | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 688b053fa12..408d0f1b7aa 100644 --- a/lib/private/Repair.php +++ b/lib/private/Repair.php @@ -80,6 +80,7 @@ use OCP\Migration\IRepairStep; use Psr\Log\LoggerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\GenericEvent; +use Throwable; class Repair implements IOutput { @@ -140,9 +141,15 @@ class Repair implements IOutput { $s = \OC::$server->query($repairStep); } catch (QueryException $e) { if (class_exists($repairStep)) { - $s = new $repairStep(); + try { + // Last resort: hope there are no constructor arguments + $s = new $repairStep(); + } catch (Throwable $inner) { + // Well, it was worth a try + throw new \Exception("Repair step '$repairStep' can't be instantiated: " . $e->getMessage(), 0, $e); + } } else { - throw new \Exception("Repair step '$repairStep' is unknown"); + throw new \Exception("Repair step '$repairStep' is unknown", 0, $e); } } |