From 38143d670b25cb172042a19a3aa822c62d2d3bab Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Fri, 9 Oct 2015 13:44:30 +0200 Subject: Catch exceptions during app upgrade - fixes #16240 --- lib/private/updater.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/private/updater.php b/lib/private/updater.php index 8aa8b0703d7..9e2e9c962f5 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -497,11 +497,15 @@ class Updater extends BasicEmitter { */ private function upgradeAppStoreApps(array $disabledApps) { foreach($disabledApps as $app) { - if (OC_Installer::isUpdateAvailable($app)) { - $ocsId = \OC::$server->getConfig()->getAppValue($app, 'ocsid', ''); + try { + if (OC_Installer::isUpdateAvailable($app)) { + $ocsId = \OC::$server->getConfig()->getAppValue($app, 'ocsid', ''); - $this->emit('\OC\Updater', 'upgradeAppStoreApp', array($app)); - OC_Installer::updateAppByOCSId($ocsId); + $this->emit('\OC\Updater', 'upgradeAppStoreApp', array($app)); + OC_Installer::updateAppByOCSId($ocsId); + } + } catch (\Exception $ex) { + $this->log->logException($ex, ['app' => 'core']); } } } -- cgit v1.2.3 From bd21e5925cf5e2f388b0f2b0f92d15e887c18423 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Fri, 9 Oct 2015 13:46:59 +0200 Subject: Clean code --- lib/private/updater.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/private/updater.php b/lib/private/updater.php index 9e2e9c962f5..69120427da8 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -32,7 +32,6 @@ namespace OC; -use OC\Core\Command\Log\Manage; use OC\Hooks\BasicEmitter; use OC_App; use OC_Installer; @@ -207,7 +206,7 @@ class Updater extends BasicEmitter { try { $this->doUpgrade($currentVersion, $installedVersion); } catch (\Exception $exception) { - \OCP\Util::logException('update', $exception); + $this->log->logException($exception, ['app' => 'core']); $this->emit('\OC\Updater', 'failure', array(get_class($exception) . ': ' .$exception->getMessage())); $success = false; } @@ -235,6 +234,7 @@ class Updater extends BasicEmitter { private function getAllowedPreviousVersion() { // this should really be a JSON file require \OC::$SERVERROOT . '/version.php'; + /** @var array $OC_VersionCanBeUpgradedFrom */ return implode('.', $OC_VersionCanBeUpgradedFrom); } -- cgit v1.2.3 From 4cb5970947f915c801a6748ad26898831ed3b4c1 Mon Sep 17 00:00:00 2001 From: Thomas Müller Date: Fri, 9 Oct 2015 14:08:22 +0200 Subject: Always pass in ILogger --- core/command/upgrade.php | 14 +++++++++----- core/register_command.php | 2 +- lib/private/templatelayout.php | 2 +- lib/private/updater.php | 4 +--- tests/lib/updater.php | 2 +- 5 files changed, 13 insertions(+), 11 deletions(-) (limited to 'lib') diff --git a/core/command/upgrade.php b/core/command/upgrade.php index 0f1b828ba25..5d4819f6baf 100644 --- a/core/command/upgrade.php +++ b/core/command/upgrade.php @@ -30,6 +30,7 @@ namespace OC\Core\Command; use OC\Console\TimestampFormatter; use OC\Updater; use OCP\IConfig; +use OCP\ILogger; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -44,17 +45,19 @@ class Upgrade extends Command { const ERROR_INVALID_ARGUMENTS = 4; const ERROR_FAILURE = 5; - /** - * @var IConfig - */ + /** @var IConfig */ private $config; + /** @var ILogger */ + private $logger; + /** * @param IConfig $config */ - public function __construct(IConfig $config) { + public function __construct(IConfig $config, ILogger $logger) { parent::__construct(); $this->config = $config; + $this->logger = $logger; } protected function configure() { @@ -126,7 +129,8 @@ class Upgrade extends Command { $self = $this; $updater = new Updater(\OC::$server->getHTTPHelper(), - $this->config); + $this->config, + $this->logger); $updater->setSimulateStepEnabled($simulateStepEnabled); $updater->setUpdateStepEnabled($updateStepEnabled); diff --git a/core/register_command.php b/core/register_command.php index 460e8626e5e..4044d2d200c 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -94,7 +94,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Maintenance\Repair(new \OC\Repair(\OC\Repair::getRepairSteps()), \OC::$server->getConfig())); $application->add(new OC\Core\Command\Maintenance\SingleUser(\OC::$server->getConfig())); - $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig())); + $application->add(new OC\Core\Command\Upgrade(\OC::$server->getConfig(), \OC::$server->getLogger())); $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/templatelayout.php b/lib/private/templatelayout.php index 43c83dea815..7d16823d2a8 100644 --- a/lib/private/templatelayout.php +++ b/lib/private/templatelayout.php @@ -79,7 +79,7 @@ class OC_TemplateLayout extends OC_Template { if($this->config->getSystemValue('updatechecker', true) === true && OC_User::isAdminUser(OC_User::getUser())) { $updater = new \OC\Updater(\OC::$server->getHTTPHelper(), - \OC::$server->getConfig()); + \OC::$server->getConfig(), \OC::$server->getLogger()); $data = $updater->check(); if(isset($data['version']) && $data['version'] != '' and $data['version'] !== Array()) { diff --git a/lib/private/updater.php b/lib/private/updater.php index 69120427da8..70d68863788 100644 --- a/lib/private/updater.php +++ b/lib/private/updater.php @@ -198,9 +198,7 @@ class Updater extends BasicEmitter { $installedVersion = $this->config->getSystemValue('version', '0.0.0'); $currentVersion = implode('.', \OC_Util::getVersion()); - if ($this->log) { - $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core')); - } + $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core')); $success = true; try { diff --git a/tests/lib/updater.php b/tests/lib/updater.php index 763858acf5d..1651fe1759d 100644 --- a/tests/lib/updater.php +++ b/tests/lib/updater.php @@ -161,7 +161,7 @@ class UpdaterTest extends \Test\TestCase { * @param bool $result */ public function testIsUpgradePossible($oldVersion, $newVersion, $allowedVersion, $result) { - $updater = new Updater($this->httpHelper, $this->config); + $updater = new Updater($this->httpHelper, $this->config, $this->logger); $this->assertSame($result, $updater->isUpgradePossible($oldVersion, $newVersion, $allowedVersion)); } -- cgit v1.2.3