diff options
author | Daniel Kesselberg <mail@danielkesselberg.de> | 2019-02-02 18:07:48 +0100 |
---|---|---|
committer | Daniel Kesselberg <mail@danielkesselberg.de> | 2019-02-13 23:06:46 +0100 |
commit | 0b58b0faf3f6aba4ec78935e21d4201048ccfcc9 (patch) | |
tree | b2b402ad2f61e37f5ffa5fcdffda883c6f12617a | |
parent | 004f7fa8e141b159cc76f99cc041eec215444236 (diff) | |
download | nextcloud-server-0b58b0faf3f6aba4ec78935e21d4201048ccfcc9.tar.gz nextcloud-server-0b58b0faf3f6aba4ec78935e21d4201048ccfcc9.zip |
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>
-rw-r--r-- | core/Command/Maintenance/Repair.php | 13 | ||||
-rw-r--r-- | core/register_command.php | 7 | ||||
-rw-r--r-- | lib/private/Repair.php | 8 |
3 files changed, 17 insertions, 11 deletions
diff --git a/core/Command/Maintenance/Repair.php b/core/Command/Maintenance/Repair.php index 71d13cd29f3..e9595a22285 100644 --- a/core/Command/Maintenance/Repair.php +++ b/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(); diff --git a/core/register_command.php b/core/register_command.php index fb029f1be4a..15bb37e4338 100644 --- a/core/register_command.php +++ b/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())); diff --git a/lib/private/Repair.php b/lib/private/Repair.php index 2ab3a57e824..0d1209d552b 100644 --- a/lib/private/Repair.php +++ b/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; } |