From 9357b3a4ec64fbcca58967d0319065de7d363560 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 28 Jan 2017 10:50:25 -0500 Subject: Add command to execute individual job --- ChangeLog | 1 + app/Console/JobCommand.php | 35 +++++++++++++++++++++++++++++++++ app/Core/Queue/QueueManager.php | 2 +- app/ServiceProvider/CommandProvider.php | 2 ++ doc/cli.markdown | 7 +++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 app/Console/JobCommand.php diff --git a/ChangeLog b/ChangeLog index 34829815..3b87b3ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ Version 1.0.38 (unreleased) New features: * User invites +* Add command to execute individual job (mostly for debugging) Improvements: diff --git a/app/Console/JobCommand.php b/app/Console/JobCommand.php new file mode 100644 index 00000000..bdaae32f --- /dev/null +++ b/app/Console/JobCommand.php @@ -0,0 +1,35 @@ +setName('job') + ->setDescription('Execute individual job (read payload from stdin)') + ; + } + + protected function execute(InputInterface $input, OutputInterface $output) + { + $payload = fgets(STDIN); + + $job = new Job(); + $job->unserialize($payload); + + JobHandler::getInstance($this->container)->executeJob($job); + } +} diff --git a/app/Core/Queue/QueueManager.php b/app/Core/Queue/QueueManager.php index dcf0ebf5..1d7c2d1e 100644 --- a/app/Core/Queue/QueueManager.php +++ b/app/Core/Queue/QueueManager.php @@ -64,7 +64,7 @@ class QueueManager extends Base public function listen() { if ($this->queue === null) { - throw new LogicException('No queue driver defined!'); + throw new LogicException('No queue driver defined or unable to connect to broker!'); } while ($job = $this->queue->pull()) { diff --git a/app/ServiceProvider/CommandProvider.php b/app/ServiceProvider/CommandProvider.php index c9abb294..f17ba352 100644 --- a/app/ServiceProvider/CommandProvider.php +++ b/app/ServiceProvider/CommandProvider.php @@ -5,6 +5,7 @@ namespace Kanboard\ServiceProvider; use Kanboard\Console\CronjobCommand; use Kanboard\Console\DatabaseMigrationCommand; use Kanboard\Console\DatabaseVersionCommand; +use Kanboard\Console\JobCommand; use Kanboard\Console\LocaleComparatorCommand; use Kanboard\Console\LocaleSyncCommand; use Kanboard\Console\PluginInstallCommand; @@ -52,6 +53,7 @@ class CommandProvider implements ServiceProviderInterface $application->add(new TaskTriggerCommand($container)); $application->add(new CronjobCommand($container)); $application->add(new WorkerCommand($container)); + $application->add(new JobCommand($container)); $application->add(new ResetPasswordCommand($container)); $application->add(new ResetTwoFactorCommand($container)); $application->add(new PluginUpgradeCommand($container)); diff --git a/doc/cli.markdown b/doc/cli.markdown index 8bd5bde5..b1722308 100644 --- a/doc/cli.markdown +++ b/doc/cli.markdown @@ -30,6 +30,7 @@ Options: Available commands: cronjob Execute daily cronjob help Displays help for a command + job Execute individual job (read payload from stdin) list Lists commands worker Execute queue worker db @@ -207,6 +208,12 @@ Note: Installed files will have the same permissions as the current user ./cli worker ``` +### Execute individual job (mostly for debugging) + +```bash +echo 'RAW_JOB_DATA' | ./cli job +``` + ### Execute database migrations If the parameter `DB_RUN_MIGRATIONS` is set to `false`, you have run the database migrations manually: -- cgit v1.2.3