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.
This commit is contained in:
parent
e6abe96374
commit
22bc37cb82
|
@ -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;
|
||||
});
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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>');
|
||||
});
|
||||
|
|
|
@ -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();
|
||||
|
||||
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');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -172,6 +172,20 @@ class Updater extends BasicEmitter {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
|
Loading…
Reference in New Issue