diff options
author | Vincent Petry <pvince81@owncloud.com> | 2015-02-27 12:44:04 +0100 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-02-27 12:44:04 +0100 |
commit | 22bc37cb82368fba912a9e5a5ef0e87017d04b1e (patch) | |
tree | 42a7a13fff923c1df9703300ee830110c40656c4 | |
parent | e6abe96374d31ba4c44103b822ee826ea6e5a927 (diff) | |
download | nextcloud-server-22bc37cb82368fba912a9e5a5ef0e87017d04b1e.tar.gz nextcloud-server-22bc37cb82368fba912a9e5a5ef0e87017d04b1e.zip |
Properly forward repair errors and warnings
This makes repair errors and warnings visible for the user when
upgrading on the command line or in the web UI.
-rw-r--r-- | core/ajax/update.php | 6 | ||||
-rw-r--r-- | core/command/maintenance/repair.php | 3 | ||||
-rw-r--r-- | core/command/upgrade.php | 6 | ||||
-rw-r--r-- | lib/private/repair/repairlegacystorages.php | 15 | ||||
-rw-r--r-- | lib/private/updater.php | 16 |
5 files changed, 45 insertions, 1 deletions
diff --git a/core/ajax/update.php b/core/ajax/update.php index b2ca0e3c8ec..6a274b76309 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -35,6 +35,12 @@ if (OC::checkUpgrade(false)) { $updater->listen('\OC\Updater', 'appUpgrade', function ($app, $version) use ($eventSource, $l) { $eventSource->send('success', (string)$l->t('Updated "%s" to %s', array($app, $version))); }); + $updater->listen('\OC\Updater', 'repairWarning', function ($description) use ($eventSource, $l) { + $eventSource->send('notice', (string)$l->t('Repair warning: ') . $description); + }); + $updater->listen('\OC\Updater', 'repairError', function ($description) use ($eventSource, $l) { + $eventSource->send('notice', (string)$l->t('Repair error: ') . $description); + }); $updater->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use (&$incompatibleApps) { $incompatibleApps[]= $app; }); diff --git a/core/command/maintenance/repair.php b/core/command/maintenance/repair.php index bf94b2647ce..bf2cac32ff9 100644 --- a/core/command/maintenance/repair.php +++ b/core/command/maintenance/repair.php @@ -46,6 +46,9 @@ class Repair extends Command { $this->repair->listen('\OC\Repair', 'info', function ($description) use ($output) { $output->writeln(' - ' . $description); }); + $this->repair->listen('\OC\Repair', 'warning', function ($description) use ($output) { + $output->writeln(' - WARNING: ' . $description); + }); $this->repair->listen('\OC\Repair', 'error', function ($description) use ($output) { $output->writeln(' - ERROR: ' . $description); }); diff --git a/core/command/upgrade.php b/core/command/upgrade.php index e5402796136..8c3fbacb3f4 100644 --- a/core/command/upgrade.php +++ b/core/command/upgrade.php @@ -113,6 +113,12 @@ class Upgrade extends Command { $updater->listen('\OC\Updater', 'thirdPartyAppDisabled', function ($app) use($output) { $output->writeln('<info>Disabled 3rd-party app: ' . $app . '</info>'); }); + $updater->listen('\OC\Updater', 'repairWarning', function ($app) use($output) { + $output->writeln('<error>Repair warning: ' . $app . '</error>'); + }); + $updater->listen('\OC\Updater', 'repairError', function ($app) use($output) { + $output->writeln('<error>Repair error: ' . $app . '</error>'); + }); $updater->listen('\OC\Updater', 'appUpgradeCheck', function () use ($output) { $output->writeln('<info>Checked database schema update for apps</info>'); }); diff --git a/lib/private/repair/repairlegacystorages.php b/lib/private/repair/repairlegacystorages.php index f09ca2b5cdd..027cb68eb1b 100644 --- a/lib/private/repair/repairlegacystorages.php +++ b/lib/private/repair/repairlegacystorages.php @@ -143,6 +143,7 @@ class RepairLegacyStorages extends BasicEmitter { $dataDirId = 'local::' . $dataDir; $count = 0; + $hasWarnings = false; $this->connection->beginTransaction(); @@ -167,6 +168,7 @@ class RepairLegacyStorages extends BasicEmitter { } } catch (\OC\RepairException $e) { + $hasWarnings = true; $this->emit( '\OC\Repair', 'warning', @@ -180,6 +182,7 @@ class RepairLegacyStorages extends BasicEmitter { . ' WHERE `id` NOT LIKE \'%::%\''; $result = $this->connection->executeQuery($sql); $row = $result->fetch(); + // find at least one to make sure it's worth // querying the user list if ((int)$row['c'] > 0) { @@ -213,6 +216,7 @@ class RepairLegacyStorages extends BasicEmitter { } } catch (\OC\RepairException $e) { + $hasWarnings = true; $this->emit( '\OC\Repair', 'warning', @@ -229,6 +233,15 @@ class RepairLegacyStorages extends BasicEmitter { $this->connection->commit(); - $this->config->setAppValue('core', 'repairlegacystoragesdone', 'yes'); + if ($hasWarnings) { + $this->emit( + '\OC\Repair', + 'warning', + array('Some legacy storages could not be repaired. Please manually fix them then re-run ./occ maintenance:repair') + ); + } else { + // if all were done, no need to redo the repair during next upgrade + $this->config->setAppValue('core', 'repairlegacystoragesdone', 'yes'); + } } } diff --git a/lib/private/updater.php b/lib/private/updater.php index 71ada3217e0..302003e666c 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -173,6 +173,20 @@ class Updater extends BasicEmitter { } /** + * Forward messages emitted by the repair routine + * + * @param Repair $repair repair routine + */ + private function emitRepairMessages(Repair $repair) { + $repair->listen('\OC\Repair', 'warning', function ($description) { + $this->emit('\OC\Updater', 'repairWarning', array($description)); + }); + $repair->listen('\OC\Repair', 'error', function ($description) { + $this->emit('\OC\Updater', 'repairError', array($description)); + }); + } + + /** * runs the update actions in maintenance mode, does not upgrade the source files * except the main .htaccess file * @@ -204,6 +218,7 @@ class Updater extends BasicEmitter { // pre-upgrade repairs $repair = new Repair(Repair::getBeforeUpgradeRepairSteps()); + $this->emitRepairMessages($repair); $repair->run(); // simulate DB upgrade @@ -223,6 +238,7 @@ class Updater extends BasicEmitter { // post-upgrade repairs $repair = new Repair(Repair::getRepairSteps()); + $this->emitRepairMessages($repair); $repair->run(); //Invalidate update feed |