浏览代码

Let repair step query exceptions bubble up

And hide the type error caused by a constructor call with missing
arguments.

`new $repairStep();` only works for the rare case that no arguments are
required. Anything else will throw. Then we previously hid the trace of
the more important query exception.

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
tags/v24.0.0beta1
Christoph Wurst 2 年前
父节点
当前提交
f68ab00811
没有帐户链接到提交者的电子邮件
共有 1 个文件被更改,包括 8 次插入1 次删除
  1. 8
    1
      lib/private/Repair.php

+ 8
- 1
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,7 +141,13 @@ 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");
}

正在加载...
取消
保存