0

I am using Humhub framework (based on Yii 2 framework). I've setup the queue jobs, and run the command queue/listen. I created a new job in protected\modules\wiki\jobs\AddCoOwnerJob.php like this:

namespace humhub\modules\wiki\jobs;

use humhub\modules\queue\ActiveJob;

class AddCoOwnerJob extends ActiveJob { ... }

But the system logs the following error:

yii\base\InvalidArgumentException: Job 578423 must be a JobInterface instance instead of __PHP_Incomplete_Class

How can I fix this? I've only seen this job getting errors, no problem with other default jobs.

This is the config for queue:

'queue' => [
    'class' => 'humhub\modules\queue\driver\Redis'
],

My stack:

  • PHP 7.2 (apcu disabled)
  • Yii 2 Queue class => humhub\modules\queue\driver\Redis

You can see the full log below:

yii\base\InvalidArgumentException: Job 578423 must be a JobInterface instance instead of __PHP_Incomplete_Class#1
 (
     [__PHP_Incomplete_Class_Name] => 'humhub\\modules\\wiki\\jobs\\AddCoOwnerJob'
     [humhub\modules\wiki\jobs\AddCoOwnerJob:wikiPage] => humhub\modules\wiki\models\WikiPage#2
     ( ...contains data... )
     [originatorId] => 48646
 ). in /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2-queue/src/Queue.php:199
 Stack trace:
 #0 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2-queue/src/cli/Queue.php(162): yii\queue\Queue->handleMessage('578423', 'O:38:"humhub\\mo...', '300', '1')
 #1 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2-queue/src/cli/Command.php(145): yii\queue\cli\Queue->execute('578423', 'O:38:"humhub\\mo...', '300', '1', '2821')
 #2 [internal function]: yii\queue\cli\Command->actionExec('578423', '300', '1', '2821')
 #3 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
 #4 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
 #5 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/console/Controller.php(164): yii\base\Controller->runAction('exec', Array)
 #6 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/base/Module.php(528): yii\console\Controller->runAction('exec', Array)
 #7 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('queue/exec', Array)
 #8 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/console/Application.php(147): yii\console\Application->runAction('queue/exec', Array)
 #9 /var/www/localhost/htdocs/protected/vendor/yiisoft/yii2/base/Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))
 #10 /var/www/localhost/htdocs/protected/yii(29): yii\base\Application->run()
 #11 {main}
Harry
  • 678
  • 10
  • 26
  • It looks like the autoloader is not able to load the class when unserializing it. Try checking the config used by `queue/listen` command - probably the console config. – Michal Hynčica Jul 28 '20 at 11:19
  • How do I check it? I see this in the common config: 'queue' => [ 'class' => 'humhub\modules\queue\driver\Redis' ], I just run the command `queue/listen` without any param. – Harry Jul 28 '20 at 11:35
  • @MichalHynčica how do I check the unserialized value of the class? – Harry Jul 28 '20 at 11:42

0 Answers0