ソースを参照

Do not run getRepairSteps in register_commands

getRepairSteps is quite expensive (because every repair step is
initialized and their dependencies are injected). Should not
call it during register.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
tags/v16.0.0alpha1
Daniel Kesselberg 5年前
コミット
0b58b0faf3
コミッターのメールアドレスに関連付けられたアカウントが存在しません
3個のファイルの変更17行の追加11行の削除
  1. 8
    5
      core/Command/Maintenance/Repair.php
  2. 5
    2
      core/register_command.php
  3. 4
    4
      lib/private/Repair.php

+ 8
- 5
core/Command/Maintenance/Repair.php ファイルの表示

@@ -77,11 +77,14 @@ class Repair extends Command {
}

protected function execute(InputInterface $input, OutputInterface $output) {
$includeExpensive = $input->getOption('include-expensive');
if ($includeExpensive) {
foreach ($this->repair->getExpensiveRepairSteps() as $step) {
$this->repair->addStep($step);
}
$repairSteps = $this->repair::getRepairSteps();

if ($input->getOption('include-expensive')) {
$repairSteps = array_merge($repairSteps, $this->repair::getExpensiveRepairSteps());
}

foreach ($repairSteps as $step) {
$this->repair->addStep($step);
}

$apps = $this->appManager->getInstalledApps();

+ 5
- 2
core/register_command.php ファイルの表示

@@ -140,8 +140,11 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) {

$application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig(), \OC::$server->getLogger(), \OC::$server->query(\OC\Installer::class)));
$application->add(new OC\Core\Command\Maintenance\Repair(
new \OC\Repair(\OC\Repair::getRepairSteps(), \OC::$server->getEventDispatcher()), \OC::$server->getConfig(),
\OC::$server->getEventDispatcher(), \OC::$server->getAppManager()));
new \OC\Repair([], \OC::$server->getEventDispatcher()),
\OC::$server->getConfig(),
\OC::$server->getEventDispatcher(),
\OC::$server->getAppManager()
));

$application->add(new OC\Core\Command\User\Add(\OC::$server->getUserManager(), \OC::$server->getGroupManager()));
$application->add(new OC\Core\Command\User\Delete(\OC::$server->getUserManager()));

+ 4
- 4
lib/private/Repair.php ファイルの表示

@@ -56,7 +56,7 @@ use OC\Template\SCSSCacher;
use OCP\AppFramework\QueryException;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\EventDispatcher\GenericEvent;

class Repair implements IOutput {
@@ -64,7 +64,7 @@ class Repair implements IOutput {
/** @var IRepairStep[] */
private $repairSteps;

/** @var EventDispatcher */
/** @var EventDispatcherInterface */
private $dispatcher;

/** @var string */
@@ -74,9 +74,9 @@ class Repair implements IOutput {
* Creates a new repair step runner
*
* @param IRepairStep[] $repairSteps array of RepairStep instances
* @param EventDispatcher $dispatcher
* @param EventDispatcherInterface $dispatcher
*/
public function __construct($repairSteps = [], EventDispatcher $dispatcher = null) {
public function __construct($repairSteps = [], EventDispatcherInterface $dispatcher = null) {
$this->repairSteps = $repairSteps;
$this->dispatcher = $dispatcher;
}

読み込み中…
キャンセル
保存