diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-11-01 21:52:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-01 21:52:20 +0100 |
commit | 35e3d40e803653e2fdfcd775eefc2d8a9a183d80 (patch) | |
tree | cfa3e9ef33a58f090a74db27e0d6d5598727eb2f /lib | |
parent | d96e2ce1113158e770a89e1dbf5b6c52e6057565 (diff) | |
parent | f5a1f4bc1b6338804106e4beac6af5ab2732a947 (diff) | |
download | nextcloud-server-35e3d40e803653e2fdfcd775eefc2d8a9a183d80.tar.gz nextcloud-server-35e3d40e803653e2fdfcd775eefc2d8a9a183d80.zip |
Merge pull request #12188 from nextcloud/revert/9900/revert-wait-for-cron
Revert "Wait for cron to finish before running upgrade command"
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/BackgroundJob/JobList.php | 40 | ||||
-rw-r--r-- | lib/private/Updater.php | 27 |
2 files changed, 9 insertions, 58 deletions
diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php index fab608cf164..e890c35868b 100644 --- a/lib/private/BackgroundJob/JobList.php +++ b/lib/private/BackgroundJob/JobList.php @@ -48,9 +48,6 @@ class JobList implements IJobList { /**@var ITimeFactory */ protected $timeFactory; - /** @var int - 12 hours * 3600 seconds*/ - private $jobTimeOut = 43200; - /** * @param IDBConnection $connection * @param IConfig $config @@ -186,7 +183,7 @@ class JobList implements IJobList { $query = $this->connection->getQueryBuilder(); $query->select('*') ->from('jobs') - ->where($query->expr()->lte('reserved_at', $query->createNamedParameter($this->timeFactory->getTime() - $this->jobTimeOut, IQueryBuilder::PARAM_INT))) + ->where($query->expr()->lte('reserved_at', $query->createNamedParameter($this->timeFactory->getTime() - 12 * 3600, IQueryBuilder::PARAM_INT))) ->andWhere($query->expr()->lte('last_checked', $query->createNamedParameter($this->timeFactory->getTime(), IQueryBuilder::PARAM_INT))) ->orderBy('last_checked', 'ASC') ->setMaxResults(1); @@ -346,39 +343,4 @@ class JobList implements IJobList { ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT))); $query->execute(); } - - /** - * checks if a job is still running (reserved_at time is smaller than 12 hours ago) - * - * Background information: - * - * The 12 hours is the same timeout that is also used to re-schedule an non-terminated - * job (see getNext()). The idea here is to give a job enough time to run very - * long but still be able to recognize that it maybe crashed and re-schedule it - * after the timeout. It's more likely to be crashed at that time than it ran - * that long. - * - * In theory it could lead to an nearly endless loop (as in - at most 12 hours). - * The cron command will not start new jobs when maintenance mode is active and - * this method is only executed in maintenance mode (see where it is called in - * the upgrader class. So this means in the worst case we wait 12 hours when a - * job has crashed. On the other hand: then the instance should be fixed anyways. - * - * @return bool - */ - public function isAnyJobRunning(): bool { - $query = $this->connection->getQueryBuilder(); - $query->select('*') - ->from('jobs') - ->where($query->expr()->gt('reserved_at', $query->createNamedParameter($this->timeFactory->getTime() - $this->jobTimeOut, IQueryBuilder::PARAM_INT))) - ->setMaxResults(1); - $result = $query->execute(); - $row = $result->fetch(); - $result->closeCursor(); - - if ($row) { - return true; - } - return false; - } } diff --git a/lib/private/Updater.php b/lib/private/Updater.php index 8a2b1cd188c..4b4723be94f 100644 --- a/lib/private/Updater.php +++ b/lib/private/Updater.php @@ -38,7 +38,6 @@ use OC\DB\MigrationService; use OC\Hooks\BasicEmitter; use OC\IntegrityCheck\Checker; use OC_App; -use OCP\BackgroundJob\IJobList; use OCP\IConfig; use OCP\ILogger; use OCP\Util; @@ -67,9 +66,6 @@ class Updater extends BasicEmitter { /** @var Installer */ private $installer; - /** @var IJobList */ - private $jobList; - private $logLevelNames = [ 0 => 'Debug', 1 => 'Info', @@ -78,16 +74,20 @@ class Updater extends BasicEmitter { 4 => 'Fatal', ]; + /** + * @param IConfig $config + * @param Checker $checker + * @param ILogger $log + * @param Installer $installer + */ public function __construct(IConfig $config, Checker $checker, - ILogger $log, - Installer $installer, - IJobList $jobList) { + ILogger $log = null, + Installer $installer) { $this->log = $log; $this->config = $config; $this->checker = $checker; $this->installer = $installer; - $this->jobList = $jobList; } /** @@ -114,11 +114,6 @@ class Updater extends BasicEmitter { $installedVersion = $this->config->getSystemValue('version', '0.0.0'); $currentVersion = implode('.', \OCP\Util::getVersion()); - // see https://github.com/nextcloud/server/issues/9992 for potential problem - if (version_compare($installedVersion, '14.0.0.9', '>=')) { - $this->waitForCronToFinish(); - } - $this->log->debug('starting upgrade from ' . $installedVersion . ' to ' . $currentVersion, array('app' => 'core')); $success = true; @@ -617,12 +612,6 @@ class Updater extends BasicEmitter { }); } - private function waitForCronToFinish() { - while ($this->jobList->isAnyJobRunning()) { - $this->emit('\OC\Updater', 'waitForCronToFinish'); - sleep(5); - } - } } |