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) {
|
$updater->listen('\OC\Updater', 'appUpgrade', function ($app, $version) use ($eventSource, $l) {
|
||||||
$eventSource->send('success', (string)$l->t('Updated "%s" to %s', array($app, $version)));
|
$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) {
|
$updater->listen('\OC\Updater', 'incompatibleAppDisabled', function ($app) use (&$incompatibleApps) {
|
||||||
$incompatibleApps[]= $app;
|
$incompatibleApps[]= $app;
|
||||||
});
|
});
|
||||||
|
|
|
@ -46,6 +46,9 @@ class Repair extends Command {
|
||||||
$this->repair->listen('\OC\Repair', 'info', function ($description) use ($output) {
|
$this->repair->listen('\OC\Repair', 'info', function ($description) use ($output) {
|
||||||
$output->writeln(' - ' . $description);
|
$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) {
|
$this->repair->listen('\OC\Repair', 'error', function ($description) use ($output) {
|
||||||
$output->writeln(' - ERROR: ' . $description);
|
$output->writeln(' - ERROR: ' . $description);
|
||||||
});
|
});
|
||||||
|
|
|
@ -113,6 +113,12 @@ class Upgrade extends Command {
|
||||||
$updater->listen('\OC\Updater', 'thirdPartyAppDisabled', function ($app) use($output) {
|
$updater->listen('\OC\Updater', 'thirdPartyAppDisabled', function ($app) use($output) {
|
||||||
$output->writeln('<info>Disabled 3rd-party app: ' . $app . '</info>');
|
$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) {
|
$updater->listen('\OC\Updater', 'appUpgradeCheck', function () use ($output) {
|
||||||
$output->writeln('<info>Checked database schema update for apps</info>');
|
$output->writeln('<info>Checked database schema update for apps</info>');
|
||||||
});
|
});
|
||||||
|
|
|
@ -143,6 +143,7 @@ class RepairLegacyStorages extends BasicEmitter {
|
||||||
$dataDirId = 'local::' . $dataDir;
|
$dataDirId = 'local::' . $dataDir;
|
||||||
|
|
||||||
$count = 0;
|
$count = 0;
|
||||||
|
$hasWarnings = false;
|
||||||
|
|
||||||
$this->connection->beginTransaction();
|
$this->connection->beginTransaction();
|
||||||
|
|
||||||
|
@ -167,6 +168,7 @@ class RepairLegacyStorages extends BasicEmitter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (\OC\RepairException $e) {
|
catch (\OC\RepairException $e) {
|
||||||
|
$hasWarnings = true;
|
||||||
$this->emit(
|
$this->emit(
|
||||||
'\OC\Repair',
|
'\OC\Repair',
|
||||||
'warning',
|
'warning',
|
||||||
|
@ -180,6 +182,7 @@ class RepairLegacyStorages extends BasicEmitter {
|
||||||
. ' WHERE `id` NOT LIKE \'%::%\'';
|
. ' WHERE `id` NOT LIKE \'%::%\'';
|
||||||
$result = $this->connection->executeQuery($sql);
|
$result = $this->connection->executeQuery($sql);
|
||||||
$row = $result->fetch();
|
$row = $result->fetch();
|
||||||
|
|
||||||
// find at least one to make sure it's worth
|
// find at least one to make sure it's worth
|
||||||
// querying the user list
|
// querying the user list
|
||||||
if ((int)$row['c'] > 0) {
|
if ((int)$row['c'] > 0) {
|
||||||
|
@ -213,6 +216,7 @@ class RepairLegacyStorages extends BasicEmitter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (\OC\RepairException $e) {
|
catch (\OC\RepairException $e) {
|
||||||
|
$hasWarnings = true;
|
||||||
$this->emit(
|
$this->emit(
|
||||||
'\OC\Repair',
|
'\OC\Repair',
|
||||||
'warning',
|
'warning',
|
||||||
|
@ -229,6 +233,15 @@ class RepairLegacyStorages extends BasicEmitter {
|
||||||
|
|
||||||
$this->connection->commit();
|
$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');
|
$this->config->setAppValue('core', 'repairlegacystoragesdone', 'yes');
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,6 +172,20 @@ class Updater extends BasicEmitter {
|
||||||
return true;
|
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
|
* runs the update actions in maintenance mode, does not upgrade the source files
|
||||||
* except the main .htaccess file
|
* except the main .htaccess file
|
||||||
|
@ -204,6 +218,7 @@ class Updater extends BasicEmitter {
|
||||||
|
|
||||||
// pre-upgrade repairs
|
// pre-upgrade repairs
|
||||||
$repair = new Repair(Repair::getBeforeUpgradeRepairSteps());
|
$repair = new Repair(Repair::getBeforeUpgradeRepairSteps());
|
||||||
|
$this->emitRepairMessages($repair);
|
||||||
$repair->run();
|
$repair->run();
|
||||||
|
|
||||||
// simulate DB upgrade
|
// simulate DB upgrade
|
||||||
|
@ -223,6 +238,7 @@ class Updater extends BasicEmitter {
|
||||||
|
|
||||||
// post-upgrade repairs
|
// post-upgrade repairs
|
||||||
$repair = new Repair(Repair::getRepairSteps());
|
$repair = new Repair(Repair::getRepairSteps());
|
||||||
|
$this->emitRepairMessages($repair);
|
||||||
$repair->run();
|
$repair->run();
|
||||||
|
|
||||||
//Invalidate update feed
|
//Invalidate update feed
|
||||||
|
|
Loading…
Reference in New Issue