From e2a7482b490b6b3e5143b4678d88867a6398b248 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 28 May 2021 14:58:49 +0200 Subject: [PATCH 1/5] Add a command to show info about a background job and force-execute it Signed-off-by: Joas Schilling --- core/Command/Background/Job.php | 168 ++++++++++++++++++++++++++++++++ core/register_command.php | 1 + 2 files changed, 169 insertions(+) create mode 100644 core/Command/Background/Job.php diff --git a/core/Command/Background/Job.php b/core/Command/Background/Job.php new file mode 100644 index 00000000000..2a96744310b --- /dev/null +++ b/core/Command/Background/Job.php @@ -0,0 +1,168 @@ + + * + * @author Joas Schilling + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +namespace OC\Core\Command\Background; + +use OCP\BackgroundJob\IJob; +use OCP\BackgroundJob\IJobList; +use OCP\DB\QueryBuilder\IQueryBuilder; +use OCP\IDBConnection; +use OCP\ILogger; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; +use Symfony\Component\Console\Output\OutputInterface; + +class Job extends Command { + /** @var IJobList */ + protected $jobList; + /** @var IDBConnection */ + protected $connection; + /** @var ILogger */ + protected $logger; + + public function __construct(IJobList $jobList, + IDBConnection $connection, + ILogger $logger) { + parent::__construct(); + $this->jobList = $jobList; + $this->connection = $connection; + $this->logger = $logger; + } + + protected function configure(): void { + $this + ->setName('background:job') + ->setDescription('Execute a single background job manually') + ->addArgument( + 'job-id', + InputArgument::REQUIRED, + 'The ID of the job in the database' + ) + ->addOption( + 'force-execute', + null, + InputOption::VALUE_NONE, + 'Force execute the background job, independent from last run and being reserved' + ) + ; + } + + protected function execute(InputInterface $input, OutputInterface $output): int { + $jobId = (int) $input->getArgument('job-id'); + + $job = $this->jobList->getById($jobId); + if ($job === null) { + $output->writeln('Job with ID ' . $jobId . ' could not be found in the database'); + return 1; + } + + $this->printJobInfo($jobId, $job, $output); + + if ($input->getOption('force-execute')) { + $output->writeln(''); + $output->writeln('Forcing execution of the job'); + + $query = $this->connection->getQueryBuilder(); + $query->update('jobs') + ->set('last_run', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) + ->set('reserved_at', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) + ->where($query->expr()->eq('id', $query->createNamedParameter($jobId), IQueryBuilder::PARAM_INT)); + + $query->executeUpdate(); + + $job = $this->jobList->getById($jobId); + $job->execute($this->jobList, $this->logger); + $this->jobList->setLastJob($job); + + $output->writeln('Job executed!'); + $output->writeln(''); + + if ($job instanceof \OC\BackgroundJob\TimedJob || $job instanceof \OCP\BackgroundJob\TimedJob) { + $this->printJobInfo($jobId, $job, $output); + } + } + + return 0; + } + + protected function printJobInfo(int $jobId, IJob $job, OutputInterface$output): void { + + $query = $this->connection->getQueryBuilder(); + $query->select('*') + ->from('jobs') + ->where($query->expr()->eq('id', $query->createNamedParameter($jobId), IQueryBuilder::PARAM_INT)); + + $result = $query->executeQuery(); + $row = $result->fetch(); + $result->closeCursor(); + + $lastRun = new \DateTime(); + $lastRun->setTimestamp((int) $row['last_run']); + $lastChecked = new \DateTime(); + $lastChecked->setTimestamp((int) $row['last_checked']); + $reservedAt = new \DateTime(); + $reservedAt->setTimestamp((int) $row['reserved_at']); + + $output->writeln('Job class: ' . get_class($job)); + $output->writeln('Arguments: ' . json_encode($job->getArgument())); + + $isTimedJob = $job instanceof \OC\BackgroundJob\TimedJob || $job instanceof \OCP\BackgroundJob\TimedJob; + if ($isTimedJob) { + $output->writeln('Type: timed'); + } elseif ($job instanceof \OC\BackgroundJob\QueuedJob || $job instanceof \OCP\BackgroundJob\QueuedJob) { + $output->writeln('Type: queued'); + } else { + $output->writeln('Type: job'); + } + + $output->writeln(''); + $output->writeln('Last checked: ' . $lastChecked->format(\DateTimeInterface::ATOM)); + if ((int) $row['reserved_at'] === 0) { + $output->writeln('Reserved at: -'); + } else { + $output->writeln('Reserved at: ' . $reservedAt->format(\DateTimeInterface::ATOM) . ''); + } + $output->writeln('Last executed: ' . $lastRun->format(\DateTimeInterface::ATOM)); + $output->writeln('Last duration: ' . $row['execution_duration']); + + if ($isTimedJob) { + $reflection = new \ReflectionClass($job); + $intervalProperty = $reflection->getProperty('interval'); + $intervalProperty->setAccessible(true); + $interval = $intervalProperty->getValue($job); + + $nextRun = new \DateTime(); + $nextRun->setTimestamp($row['last_run'] + $interval); + + if ($nextRun > new \DateTime()) { + $output->writeln('Next execution: ' . $nextRun->format(\DateTimeInterface::ATOM) . ''); + } else { + $output->writeln('Next execution: ' . $nextRun->format(\DateTimeInterface::ATOM) . ''); + } + } + } +} diff --git a/core/register_command.php b/core/register_command.php index c110a0a3155..b27d92e81b6 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -90,6 +90,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Background\Cron(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig())); + $application->add(new OC\Core\Command\Background\Job(\OC::$server->getJobList(), \OC::$server->getDatabaseConnection(), \OC::$server->getLogger())); $application->add(\OC::$server->query(\OC\Core\Command\Broadcast\Test::class)); From 9cd9f4b4bc87133cf446746295e9730c244b3a49 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 31 May 2021 17:15:26 +0200 Subject: [PATCH 2/5] Move queries to the joblist Signed-off-by: Joas Schilling --- core/Command/Background/Job.php | 25 ++---------------- core/register_command.php | 2 +- lib/private/BackgroundJob/JobList.php | 33 +++++++++++++++++++++--- lib/public/BackgroundJob/IJobList.php | 15 +++++++++++ tests/lib/BackgroundJob/DummyJobList.php | 7 +++++ 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/core/Command/Background/Job.php b/core/Command/Background/Job.php index 2a96744310b..62f2ea823dd 100644 --- a/core/Command/Background/Job.php +++ b/core/Command/Background/Job.php @@ -27,8 +27,6 @@ namespace OC\Core\Command\Background; use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\IJobList; -use OCP\DB\QueryBuilder\IQueryBuilder; -use OCP\IDBConnection; use OCP\ILogger; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; @@ -39,17 +37,13 @@ use Symfony\Component\Console\Output\OutputInterface; class Job extends Command { /** @var IJobList */ protected $jobList; - /** @var IDBConnection */ - protected $connection; /** @var ILogger */ protected $logger; public function __construct(IJobList $jobList, - IDBConnection $connection, ILogger $logger) { parent::__construct(); $this->jobList = $jobList; - $this->connection = $connection; $this->logger = $logger; } @@ -86,14 +80,7 @@ class Job extends Command { $output->writeln(''); $output->writeln('Forcing execution of the job'); - $query = $this->connection->getQueryBuilder(); - $query->update('jobs') - ->set('last_run', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) - ->set('reserved_at', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) - ->where($query->expr()->eq('id', $query->createNamedParameter($jobId), IQueryBuilder::PARAM_INT)); - - $query->executeUpdate(); - + $this->jobList->resetBackgroundJob($job); $job = $this->jobList->getById($jobId); $job->execute($this->jobList, $this->logger); $this->jobList->setLastJob($job); @@ -110,15 +97,7 @@ class Job extends Command { } protected function printJobInfo(int $jobId, IJob $job, OutputInterface$output): void { - - $query = $this->connection->getQueryBuilder(); - $query->select('*') - ->from('jobs') - ->where($query->expr()->eq('id', $query->createNamedParameter($jobId), IQueryBuilder::PARAM_INT)); - - $result = $query->executeQuery(); - $row = $result->fetch(); - $result->closeCursor(); + $row = $this->jobList->getDetailsById($jobId); $lastRun = new \DateTime(); $lastRun->setTimestamp((int) $row['last_run']); diff --git a/core/register_command.php b/core/register_command.php index b27d92e81b6..3cff363e46f 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -90,7 +90,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Background\Cron(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Background\WebCron(\OC::$server->getConfig())); $application->add(new OC\Core\Command\Background\Ajax(\OC::$server->getConfig())); - $application->add(new OC\Core\Command\Background\Job(\OC::$server->getJobList(), \OC::$server->getDatabaseConnection(), \OC::$server->getLogger())); + $application->add(new OC\Core\Command\Background\Job(\OC::$server->getJobList(), \OC::$server->getLogger())); $application->add(\OC::$server->query(\OC\Core\Command\Broadcast\Test::class)); diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php index f3b96dcbb7b..fe8e94513e1 100644 --- a/lib/private/BackgroundJob/JobList.php +++ b/lib/private/BackgroundJob/JobList.php @@ -236,19 +236,29 @@ class JobList implements IJobList { * @return IJob|null */ public function getById($id) { + $row = $this->getDetailsById($id); + + if ($row) { + return $this->buildJob($row); + } + + return null; + } + + public function getDetailsById(int $id): ?array { $query = $this->connection->getQueryBuilder(); $query->select('*') ->from('jobs') ->where($query->expr()->eq('id', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT))); - $result = $query->execute(); + $result = $query->executeQuery(); $row = $result->fetch(); $result->closeCursor(); if ($row) { - return $this->buildJob($row); - } else { - return null; + return $row; } + + return null; } /** @@ -330,4 +340,19 @@ class JobList implements IJobList { ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId(), IQueryBuilder::PARAM_INT))); $query->execute(); } + + /** + * Reset the $job so it executes on the next trigger + * + * @param IJob $job + * @since 22.0.0 + */ + public function resetBackgroundJob(IJob $job): void { + $query = $this->connection->getQueryBuilder(); + $query->update('jobs') + ->set('last_run', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) + ->set('reserved_at', $query->createNamedParameter(0, IQueryBuilder::PARAM_INT)) + ->where($query->expr()->eq('id', $query->createNamedParameter($job->getId()), IQueryBuilder::PARAM_INT)); + $query->executeStatement(); + } } diff --git a/lib/public/BackgroundJob/IJobList.php b/lib/public/BackgroundJob/IJobList.php index 299d6725229..b8d6b03c6ea 100644 --- a/lib/public/BackgroundJob/IJobList.php +++ b/lib/public/BackgroundJob/IJobList.php @@ -97,6 +97,13 @@ interface IJobList { */ public function getById($id); + /** + * @param int $id + * @return array|null + * @since 22.0.0 + */ + public function getDetailsById(int $id): ?array; + /** * set the job that was last ran to the current time * @@ -129,4 +136,12 @@ interface IJobList { * @since 12.0.0 */ public function setExecutionTime(IJob $job, $timeTaken); + + /** + * Reset the $job so it executes on the next trigger + * + * @param IJob $job + * @since 22.0.0 + */ + public function resetBackgroundJob(IJob $job): void; } diff --git a/tests/lib/BackgroundJob/DummyJobList.php b/tests/lib/BackgroundJob/DummyJobList.php index 452b9bb98ed..97fc551d8f5 100644 --- a/tests/lib/BackgroundJob/DummyJobList.php +++ b/tests/lib/BackgroundJob/DummyJobList.php @@ -117,6 +117,10 @@ class DummyJobList extends \OC\BackgroundJob\JobList { return null; } + public function getDetailsById(int $id): ?array { + return null; + } + /** * set the lastRun of $job to now * @@ -128,4 +132,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { public function setExecutionTime(IJob $job, $timeTaken) { } + + public function resetBackgroundJob(IJob $job): void { + } } From 0a812a1c0980d3ca65106875c59e4f0aff6a79a8 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 8 Jun 2021 10:06:24 +0200 Subject: [PATCH 3/5] Adjust namespace and print a message when the job was skipped Signed-off-by: Joas Schilling --- core/Command/Background/Job.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/core/Command/Background/Job.php b/core/Command/Background/Job.php index 62f2ea823dd..fdac7ed5f27 100644 --- a/core/Command/Background/Job.php +++ b/core/Command/Background/Job.php @@ -49,7 +49,7 @@ class Job extends Command { protected function configure(): void { $this - ->setName('background:job') + ->setName('background-job:execute') ->setDescription('Execute a single background job manually') ->addArgument( 'job-id', @@ -75,22 +75,31 @@ class Job extends Command { } $this->printJobInfo($jobId, $job, $output); + $output->writeln(''); + $lastRun = $job->getLastRun(); if ($input->getOption('force-execute')) { - $output->writeln(''); + $lastRun = 0; $output->writeln('Forcing execution of the job'); + $output->writeln(''); $this->jobList->resetBackgroundJob($job); - $job = $this->jobList->getById($jobId); - $job->execute($this->jobList, $this->logger); - $this->jobList->setLastJob($job); + } + $job = $this->jobList->getById($jobId); + $job->execute($this->jobList, $this->logger); + $job = $this->jobList->getById($jobId); + + if ($lastRun !== $job->getLastRun()) { $output->writeln('Job executed!'); $output->writeln(''); if ($job instanceof \OC\BackgroundJob\TimedJob || $job instanceof \OCP\BackgroundJob\TimedJob) { $this->printJobInfo($jobId, $job, $output); } + } else { + $output->writeln('Job was not executed because it is not due'); + $output->writeln('Specify the --force-execute option to run it anyway'); } return 0; From 7239b3d560b52ed604484a0a549dd5805e3f21e4 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Wed, 13 Oct 2021 11:46:48 +0200 Subject: [PATCH 4/5] Bump since version Signed-off-by: Joas Schilling --- lib/private/BackgroundJob/JobList.php | 2 +- lib/public/BackgroundJob/IJobList.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/private/BackgroundJob/JobList.php b/lib/private/BackgroundJob/JobList.php index fe8e94513e1..9d8d1d836b6 100644 --- a/lib/private/BackgroundJob/JobList.php +++ b/lib/private/BackgroundJob/JobList.php @@ -345,7 +345,7 @@ class JobList implements IJobList { * Reset the $job so it executes on the next trigger * * @param IJob $job - * @since 22.0.0 + * @since 23.0.0 */ public function resetBackgroundJob(IJob $job): void { $query = $this->connection->getQueryBuilder(); diff --git a/lib/public/BackgroundJob/IJobList.php b/lib/public/BackgroundJob/IJobList.php index b8d6b03c6ea..9f3b485c280 100644 --- a/lib/public/BackgroundJob/IJobList.php +++ b/lib/public/BackgroundJob/IJobList.php @@ -100,7 +100,7 @@ interface IJobList { /** * @param int $id * @return array|null - * @since 22.0.0 + * @since 23.0.0 */ public function getDetailsById(int $id): ?array; @@ -141,7 +141,7 @@ interface IJobList { * Reset the $job so it executes on the next trigger * * @param IJob $job - * @since 22.0.0 + * @since 23.0.0 */ public function resetBackgroundJob(IJob $job): void; } From 3adc997833f046ecddadcf5630a686405aeb69ae Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 14 Oct 2021 09:58:49 +0200 Subject: [PATCH 5/5] Bump autoloader Signed-off-by: Joas Schilling --- apps/accessibility/composer/composer/installed.php | 4 ++-- apps/admin_audit/composer/composer/installed.php | 4 ++-- apps/cloud_federation_api/composer/composer/installed.php | 4 ++-- apps/comments/composer/composer/installed.php | 4 ++-- apps/contactsinteraction/composer/composer/installed.php | 4 ++-- apps/dav/composer/composer/installed.php | 4 ++-- apps/encryption/composer/composer/installed.php | 4 ++-- apps/federatedfilesharing/composer/composer/installed.php | 4 ++-- apps/federation/composer/composer/installed.php | 4 ++-- apps/files/composer/composer/installed.php | 4 ++-- apps/files_sharing/composer/composer/installed.php | 4 ++-- apps/files_trashbin/composer/composer/installed.php | 4 ++-- apps/files_versions/composer/composer/installed.php | 4 ++-- apps/lookup_server_connector/composer/composer/installed.php | 4 ++-- apps/oauth2/composer/composer/installed.php | 4 ++-- apps/provisioning_api/composer/composer/installed.php | 4 ++-- apps/settings/composer/composer/installed.php | 4 ++-- apps/sharebymail/composer/composer/installed.php | 4 ++-- apps/systemtags/composer/composer/installed.php | 4 ++-- apps/testing/composer/composer/installed.php | 4 ++-- apps/twofactor_backupcodes/composer/composer/installed.php | 4 ++-- apps/updatenotification/composer/composer/installed.php | 4 ++-- apps/user_ldap/composer/composer/installed.php | 4 ++-- apps/user_status/composer/composer/installed.php | 4 ++-- apps/workflowengine/composer/composer/installed.php | 4 ++-- lib/composer/composer/autoload_classmap.php | 1 + lib/composer/composer/autoload_static.php | 1 + 27 files changed, 52 insertions(+), 50 deletions(-) diff --git a/apps/accessibility/composer/composer/installed.php b/apps/accessibility/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/accessibility/composer/composer/installed.php +++ b/apps/accessibility/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/admin_audit/composer/composer/installed.php b/apps/admin_audit/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/admin_audit/composer/composer/installed.php +++ b/apps/admin_audit/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/cloud_federation_api/composer/composer/installed.php b/apps/cloud_federation_api/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/cloud_federation_api/composer/composer/installed.php +++ b/apps/cloud_federation_api/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/comments/composer/composer/installed.php b/apps/comments/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/comments/composer/composer/installed.php +++ b/apps/comments/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/contactsinteraction/composer/composer/installed.php b/apps/contactsinteraction/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/contactsinteraction/composer/composer/installed.php +++ b/apps/contactsinteraction/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/dav/composer/composer/installed.php b/apps/dav/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/dav/composer/composer/installed.php +++ b/apps/dav/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/encryption/composer/composer/installed.php b/apps/encryption/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/encryption/composer/composer/installed.php +++ b/apps/encryption/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/federatedfilesharing/composer/composer/installed.php b/apps/federatedfilesharing/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/federatedfilesharing/composer/composer/installed.php +++ b/apps/federatedfilesharing/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/federation/composer/composer/installed.php b/apps/federation/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/federation/composer/composer/installed.php +++ b/apps/federation/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/files/composer/composer/installed.php b/apps/files/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/files/composer/composer/installed.php +++ b/apps/files/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/files_sharing/composer/composer/installed.php b/apps/files_sharing/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/files_sharing/composer/composer/installed.php +++ b/apps/files_sharing/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/files_trashbin/composer/composer/installed.php b/apps/files_trashbin/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/files_trashbin/composer/composer/installed.php +++ b/apps/files_trashbin/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/files_versions/composer/composer/installed.php b/apps/files_versions/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/files_versions/composer/composer/installed.php +++ b/apps/files_versions/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/lookup_server_connector/composer/composer/installed.php b/apps/lookup_server_connector/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/lookup_server_connector/composer/composer/installed.php +++ b/apps/lookup_server_connector/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/oauth2/composer/composer/installed.php b/apps/oauth2/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/oauth2/composer/composer/installed.php +++ b/apps/oauth2/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/provisioning_api/composer/composer/installed.php b/apps/provisioning_api/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/provisioning_api/composer/composer/installed.php +++ b/apps/provisioning_api/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/settings/composer/composer/installed.php b/apps/settings/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/settings/composer/composer/installed.php +++ b/apps/settings/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/sharebymail/composer/composer/installed.php b/apps/sharebymail/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/sharebymail/composer/composer/installed.php +++ b/apps/sharebymail/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/systemtags/composer/composer/installed.php b/apps/systemtags/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/systemtags/composer/composer/installed.php +++ b/apps/systemtags/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/testing/composer/composer/installed.php b/apps/testing/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/testing/composer/composer/installed.php +++ b/apps/testing/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/twofactor_backupcodes/composer/composer/installed.php b/apps/twofactor_backupcodes/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/twofactor_backupcodes/composer/composer/installed.php +++ b/apps/twofactor_backupcodes/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/updatenotification/composer/composer/installed.php b/apps/updatenotification/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/updatenotification/composer/composer/installed.php +++ b/apps/updatenotification/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/user_ldap/composer/composer/installed.php b/apps/user_ldap/composer/composer/installed.php index 3597c50712f..e47b47d1fe3 100644 --- a/apps/user_ldap/composer/composer/installed.php +++ b/apps/user_ldap/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '62a814f4fbdec485e97e6b55a8320a02ced488bb', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => '62a814f4fbdec485e97e6b55a8320a02ced488bb', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/user_status/composer/composer/installed.php b/apps/user_status/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/user_status/composer/composer/installed.php +++ b/apps/user_status/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/apps/workflowengine/composer/composer/installed.php b/apps/workflowengine/composer/composer/installed.php index 200df43e5fd..e47b47d1fe3 100644 --- a/apps/workflowengine/composer/composer/installed.php +++ b/apps/workflowengine/composer/composer/installed.php @@ -5,7 +5,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'name' => '__root__', 'dev' => false, ), @@ -16,7 +16,7 @@ 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), - 'reference' => 'dbf7905149222115a2cd0334efcf8c93afa8683e', + 'reference' => '7239b3d560b52ed604484a0a549dd5805e3f21e4', 'dev_requirement' => false, ), ), diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 353fc22d486..376324213a9 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -818,6 +818,7 @@ return array( 'OC\\Core\\Command\\Background\\Ajax' => $baseDir . '/core/Command/Background/Ajax.php', 'OC\\Core\\Command\\Background\\Base' => $baseDir . '/core/Command/Background/Base.php', 'OC\\Core\\Command\\Background\\Cron' => $baseDir . '/core/Command/Background/Cron.php', + 'OC\\Core\\Command\\Background\\Job' => $baseDir . '/core/Command/Background/Job.php', 'OC\\Core\\Command\\Background\\WebCron' => $baseDir . '/core/Command/Background/WebCron.php', 'OC\\Core\\Command\\Base' => $baseDir . '/core/Command/Base.php', 'OC\\Core\\Command\\Broadcast\\Test' => $baseDir . '/core/Command/Broadcast/Test.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index f7c541d8c31..7c6d2c9380e 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -847,6 +847,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Core\\Command\\Background\\Ajax' => __DIR__ . '/../../..' . '/core/Command/Background/Ajax.php', 'OC\\Core\\Command\\Background\\Base' => __DIR__ . '/../../..' . '/core/Command/Background/Base.php', 'OC\\Core\\Command\\Background\\Cron' => __DIR__ . '/../../..' . '/core/Command/Background/Cron.php', + 'OC\\Core\\Command\\Background\\Job' => __DIR__ . '/../../..' . '/core/Command/Background/Job.php', 'OC\\Core\\Command\\Background\\WebCron' => __DIR__ . '/../../..' . '/core/Command/Background/WebCron.php', 'OC\\Core\\Command\\Base' => __DIR__ . '/../../..' . '/core/Command/Base.php', 'OC\\Core\\Command\\Broadcast\\Test' => __DIR__ . '/../../..' . '/core/Command/Broadcast/Test.php',