Skip to content

Commit 465cadd

Browse files
committed
log full expection during repair step
Signed-off-by: Robin Appelman <[email protected]>
1 parent 3655efe commit 465cadd

6 files changed

Lines changed: 18 additions & 7 deletions

File tree

core/register_command.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646

4747
/** @var Symfony\Component\Console\Application $application */
4848

49+
use Psr\Log\LoggerInterface;
50+
4951
$application->add(new \Stecman\Component\Symfony\Console\BashCompletion\CompletionCommand());
5052
$application->add(new OC\Core\Command\Status);
5153
$application->add(new OC\Core\Command\Check(\OC::$server->getSystemConfig()));
@@ -161,7 +163,7 @@
161163

162164
$application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig(), \OC::$server->getLogger(), \OC::$server->query(\OC\Installer::class)));
163165
$application->add(new OC\Core\Command\Maintenance\Repair(
164-
new \OC\Repair([], \OC::$server->getEventDispatcher()),
166+
new \OC\Repair([], \OC::$server->getEventDispatcher(), \OC::$server->get(LoggerInterface::class)),
165167
\OC::$server->getConfig(),
166168
\OC::$server->getEventDispatcher(),
167169
\OC::$server->getAppManager()

lib/private/Migration/BackgroundRepair.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
use OC_App;
3434
use OCP\BackgroundJob\IJobList;
3535
use OCP\ILogger;
36+
use Psr\Log\LoggerInterface;
3637
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
3738

3839
/**
@@ -92,7 +93,7 @@ protected function run($argument) {
9293
}
9394

9495
$step = $argument['step'];
95-
$repair = new Repair([], $this->dispatcher);
96+
$repair = new Repair([], $this->dispatcher, \OC::$server->get(LoggerInterface::class));
9697
try {
9798
$repair->addStep($step);
9899
} catch (\Exception $ex) {

lib/private/Repair.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
use OCP\Collaboration\Resources\IManager;
7676
use OCP\Migration\IOutput;
7777
use OCP\Migration\IRepairStep;
78+
use Psr\Log\LoggerInterface;
7879
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
7980
use Symfony\Component\EventDispatcher\GenericEvent;
8081

@@ -89,15 +90,18 @@ class Repair implements IOutput {
8990
/** @var string */
9091
private $currentStep;
9192

93+
private $logger;
94+
9295
/**
9396
* Creates a new repair step runner
9497
*
9598
* @param IRepairStep[] $repairSteps array of RepairStep instances
9699
* @param EventDispatcherInterface $dispatcher
97100
*/
98-
public function __construct(array $repairSteps, EventDispatcherInterface $dispatcher) {
101+
public function __construct(array $repairSteps, EventDispatcherInterface $dispatcher, LoggerInterface $logger) {
99102
$this->repairSteps = $repairSteps;
100103
$this->dispatcher = $dispatcher;
104+
$this->logger = $logger;
101105
}
102106

103107
/**
@@ -116,6 +120,7 @@ public function run() {
116120
try {
117121
$step->run($this);
118122
} catch (\Exception $e) {
123+
$this->logger->error("Exception while executing repair step " . $step->getName(), ['exception' => $e]);
119124
$this->emit('\OC\Repair', 'error', [$e->getMessage()]);
120125
}
121126
}

lib/private/Updater.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
use OCP\IConfig;
4646
use OCP\ILogger;
4747
use OCP\Util;
48+
use Psr\Log\LoggerInterface;
4849
use Symfony\Component\EventDispatcher\GenericEvent;
4950

5051
/**
@@ -243,7 +244,7 @@ private function doUpgrade($currentVersion, $installedVersion) {
243244
file_put_contents($this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/.ocdata', '');
244245

245246
// pre-upgrade repairs
246-
$repair = new Repair(Repair::getBeforeUpgradeRepairSteps(), \OC::$server->getEventDispatcher());
247+
$repair = new Repair(Repair::getBeforeUpgradeRepairSteps(), \OC::$server->getEventDispatcher(), \OC::$server->get(LoggerInterface::class));
247248
$repair->run();
248249

249250
$this->doCoreUpgrade();
@@ -276,7 +277,7 @@ private function doUpgrade($currentVersion, $installedVersion) {
276277
}
277278

278279
// post-upgrade repairs
279-
$repair = new Repair(Repair::getRepairSteps(), \OC::$server->getEventDispatcher());
280+
$repair = new Repair(Repair::getRepairSteps(), \OC::$server->getEventDispatcher(), \OC::$server->get(LoggerInterface::class));
280281
$repair->run();
281282

282283
//Invalidate update feed

lib/private/legacy/OC_App.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
use OCP\AppFramework\QueryException;
6262
use OCP\Authentication\IAlternativeLogin;
6363
use OCP\ILogger;
64+
use Psr\Log\LoggerInterface;
6465

6566
/**
6667
* This class manages the apps. It allows them to register and integrate in the
@@ -1041,7 +1042,7 @@ public static function executeRepairSteps(string $appId, array $steps) {
10411042
$dispatcher = OC::$server->getEventDispatcher();
10421043

10431044
// load the steps
1044-
$r = new Repair([], $dispatcher);
1045+
$r = new Repair([], $dispatcher, \OC::$server->get(LoggerInterface::class));
10451046
foreach ($steps as $step) {
10461047
try {
10471048
$r->addStep($step);

tests/lib/RepairStepTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace Test;
1010

1111
use OCP\Migration\IRepairStep;
12+
use Psr\Log\LoggerInterface;
1213
use Symfony\Component\EventDispatcher\EventDispatcher;
1314

1415
class RepairStepTest implements IRepairStep {
@@ -41,7 +42,7 @@ class RepairTest extends TestCase {
4142
protected function setUp(): void {
4243
parent::setUp();
4344
$dispatcher = new EventDispatcher();
44-
$this->repair = new \OC\Repair([], $dispatcher);
45+
$this->repair = new \OC\Repair([], $dispatcher, $this->createMock(LoggerInterface::class));
4546

4647
$dispatcher->addListener('\OC\Repair::warning', function ($event) {
4748
/** @var \Symfony\Component\EventDispatcher\GenericEvent $event */

0 commit comments

Comments
 (0)