CHAT_OUTPUT_BEGIN
COMMAND_ID=NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-JOBMGR112
STATUS=OK
RC=0
HOST=pve01
MODE=read-only
COMPONENT=newfi-newfdom-contentindexnow-jobmanager-semantics-readonly
REFERENCE_REGISTER_CHECK=OK
REFERENCE_SHA256=5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66
ERROR_REGISTER_CHECK=OK
ERROR_REGISTER_SHA256=3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0
COMMAND_SHA256=91c6d213f03dd756e7d98ffc978a277df1a7b265ebac81ff022fb0b6af52f527
DUPLICATE_FAILED_COMMAND_BLOCKED=false
EXECUTION_STARTED=true
CHANGE_DECLARED=false
RESULT_CONTRACT_VALID=true
RESULT_CONTRACT_STATUS=NOT_APPLICABLE
RESULT_CONTRACT_ERROR=NONE
COMMAND_RC=0
CHANGES_MADE=false
ROLLBACK_STARTED=false
ROLLBACK_RESTORED=null
MUTATION_OUTCOME=NO_MUTATION
SANITIZED=yes
SECRETS_INCLUDED=no
PRIVATE_ADDRESSES_INCLUDED=no
RAW_EVIDENCE_SHA256=0cda876282b18beff61dc397bbdb0f847d5cf6d20170e0df2d682a7aafa6967b
SANITIZED_OUTPUT_SHA256=0cda876282b18beff61dc397bbdb0f847d5cf6d20170e0df2d682a7aafa6967b
OUTPUT_BEGIN
NEWFI112_BEGIN
COMMAND_ID=NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-JOBMGR112
NEWFI112_STAGING={"contentindex":{"excerpt":[{"line":40,"text":"\t\tif (!$contentUrl)"},{"line":41,"text":"\t\t{"},{"line":42,"text":"\t\t\t/** @var Entity $content */"},{"line":43,"text":"\t\t\t$content = $this->app->findByContentType($contentType, $contentId);"},{"line":44,"text":""},{"line":45,"text":"\t\t\tif (!$content instanceof Entity)"},{"line":46,"text":"\t\t\t{"},{"line":47,"text":"\t\t\t\t// content probably deleted"},{"line":48,"text":"\t\t\t\treturn $this->complete();"},{"line":49,"text":"\t\t\t}"},{"line":50,"text":""},{"line":51,"text":"\t\t\tif (!method_exists($content, 'canView'))"},{"line":52,"text":"\t\t\t{"},{"line":53,"text":"\t\t\t\tthrow new \\LogicException("},{"line":54,"text":"\t\t\t\t\t'Could not determine content viewability; Implement XF\\Entity\\ViewableInterface for ' . get_class($content)"},{"line":55,"text":"\t\t\t\t);"},{"line":56,"text":"\t\t\t}"},{"line":57,"text":""},{"line":58,"text":"\t\t\tif (!$content instanceof LinkableInterface)"},{"line":59,"text":"\t\t\t{"},{"line":60,"text":"\t\t\t\tthrow new \\LogicException("},{"line":61,"text":"\t\t\t\t\t'Implement XF\\Entity\\LinkableInterface for ' . get_class($content)"},{"line":62,"text":"\t\t\t\t);"},{"line":63,"text":"\t\t\t}"},{"line":64,"text":""},{"line":65,"text":"\t\t\t$guestUser = \\XF::repository(UserRepository::class)->getGuestUser();"},{"line":66,"text":"\t\t\t$canView = \\XF::asVisitor($guestUser, function () use ($guestUser, $content)"},{"line":67,"text":"\t\t\t{"},{"line":68,"text":"\t\t\t\tif (!$guestUser->hasPermission('general', 'view'))"},{"line":69,"text":"\t\t\t\t{"},{"line":70,"text":"\t\t\t\t\treturn false;"},{"line":71,"text":"\t\t\t\t}"},{"line":72,"text":""},{"line":73,"text":"\t\t\t\treturn $content->canView($content);"},{"line":74,"text":"\t\t\t});"},{"line":75,"text":"\t\t\tif (!$canView)"},{"line":76,"text":"\t\t\t{"},{"line":77,"text":"\t\t\t\treturn $this->complete();"},{"line":78,"text":"\t\t\t}"},{"line":79,"text":""},{"line":80,"text":"\t\t\t$contentUrl = $content->getContentUrl(true);"},{"line":81,"text":"\t\t}"},{"line":82,"text":""}],"sha256":"b025d0658da8716a5cf5bbf85e63bb7885ac24715353da58a8bac9c5b7adeef0"},"counts":{"drafts":0,"resources":6,"tag_content":18,"tags":15,"updates":6,"versions":6},"errors":{"ids":[33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54],"old_fp":"e739c2c309539a508e20eba89b0ebc688640ef6ff9f919bbb419b2faad819f80","rows":[{"error_id":33,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:variations.less: ParseError: Unexpected input in public:variations.less on line 849, column 34 (on or near line 849)"},{"error_id":34,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:core.less: ParseError: Unexpected input in public:core.less on line 849, column 34 (on or near line 849)"},{"error_id":35,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:app.less: ParseError: Unexpected input in public:app.less on line 849, column 34 (on or near line 849)"},{"error_id":36,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:extra.less: ParseError: Unexpected input in public:extra.less on line 849, column 34 (on or near line 849)"},{"error_id":37,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:variations.less: ParseError: Unexpected input in public:variations.less on line 849, column 34 (on or near line 849)"},{"error_id":38,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:core.less: ParseError: Unexpected input in public:core.less on line 849, column 34 (on or near line 849)"},{"error_id":39,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:app.less: ParseError: Unexpected input in public:app.less on line 849, column 34 (on or near line 849)"},{"error_id":40,"exception_type":"XF\\CssRenderException","filename":"src/XF/CssRenderException.php","line":89,"message":"Error rendering template public:extra.less: ParseError: Unexpected input in public:extra.less on line 849, column 34 (on or near line 849)"},{"error_id":41,"exception_type":"XF\\PrintableException","filename":"src/XF/Mvc/Entity/Entity.php","line":1276,"message":"Строка 111: Ошибка синтаксиса - Название шаблона: public:newfi_portal"},{"error_id":42,"exception_type":"LogicException","filename":"src/XF/Mvc/Entity/Entity.php","line":645,"message":"Attempted to set 'type' while a save was pending without forceSet"},{"error_id":43,"exception_type":"ErrorException","filename":"src/XF/Mvc/Entity/Entity.php","line":1276,"message":"Fatal Error: Uncaught XF\\PrintableException: Строка 111: Ошибка синтаксиса - Название шаблона: public:newfi_portal in /var/www/forums/newfi/public/src/XF/Mvc/Entity/Entity.php:1276 Stack trace: #0 Command line code(31): XF\\Mvc\\Entity\\Entity->save(true, false) #1 {main} thrown"},{"error_id":44,"exception_type":"ErrorException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"Fatal Error: Uncaught XF\\Db\\InvalidQueryException: MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '\\'Gram/Support\\'' at line 1 in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\Db\\AbstractStatement->getException('...', 1064, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\Db\\Mysqli\\Statement->getException('...', 1064, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\Db\\Mysqli\\Statement->prepare() #3 /var/www"},{"error_id":45,"exception_type":"XF\\PrintableException","filename":"src/XF/Mvc/Entity/Entity.php","line":1276,"message":"Пожалуйста, введите корректный префикс роутинга."},{"error_id":46,"exception_type":"ErrorException","filename":"Command line code","line":5,"message":"Fatal Error: Uncaught ReflectionException: Method XF\\AddOn\\AbstractSetup::applyGlobalPermissionByGroup() does not exist in Command line code:5 Stack trace: #0 Command line code(5): ReflectionMethod->__construct('...', '...') #1 {main} thrown"},{"error_id":47,"exception_type":"XF\\Db\\InvalidQueryException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'enabled FROM xf_template_modification WHERE addon_id = ? ORDER BY modificatio...' at line 1"},{"error_id":48,"exception_type":"XF\\Db\\InvalidQueryException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1064]: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'enabled FROM xf_template_modification WHERE addon_id = ? ORDER BY modificatio...' at line 1"},{"error_id":49,"exception_type":"XF\\Db\\Exception","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'sub_name_format' in 'SELECT'"},{"error_id":50,"exception_type":"XF\\Db\\Exception","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"MySQL statement prepare error [1054]: Unknown column 'display_in_list' in 'SELECT'"},{"error_id":51,"exception_type":"ErrorException","filename":"Command line code","line":32,"message":"Fatal Error: Uncaught ErrorException: [E_WARNING] Trying to access array offset on false in Command line code:32 Stack trace: #0 Command line code(32): XF::handlePhpError(2, '...', '...', 32) #1 {main} thrown"},{"error_id":52,"exception_type":"ErrorException","filename":"Command line code","line":16,"message":"Fatal Error: Uncaught ErrorException: [E_WARNING] Trying to access array offset on false in Command line code:16 Stack trace: #0 Command line code(16): XF::handlePhpError(2, '...', '...', 16) #1 {main} thrown"},{"error_id":53,"exception_type":"ErrorException","filename":"src/XF/Db/AbstractStatement.php","line":225,"message":"Fatal Error: Uncaught XF\\Db\\Exception: MySQL statement prepare error [1054]: Unknown column 'display_in_list' in 'SELECT' in /var/www/forums/newfi/public/src/XF/Db/AbstractStatement.php:225 Stack trace: #0 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(207): XF\\Db\\AbstractStatement->getException('...', 1054, '...') #1 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(43): XF\\Db\\Mysqli\\Statement->getException('...', 1054, '...') #2 /var/www/forums/newfi/public/src/XF/Db/Mysqli/Statement.php(61): XF\\Db\\Mysqli\\Statement->prepare() #3 /var/www/forums/newfi/public/src/XF/Db/AbstractAdapter.php(96): XF\\Db\\Mysqli\\Statement->execute() #4 /var/www/forums/newfi/public/src/XF/Db/"},{"error_id":54,"exception_type":"ErrorException","filename":"src/XF/Service/ValidateAndSavableTrait.php","line":36,"message":"Fatal Error: Uncaught LogicException: Cannot save with validation errors. Use validate() to ensure there are no errors. (First error: Пожалуйста, укажите корректную версию.) in /var/www/forums/newfi/public/src/XF/Service/ValidateAndSavableTrait.php:36 Stack trace: #0 Command line code(4): XFRM\\Service\\ResourceItem\\Create->save() #1 /var/www/forums/newfi/public/src/XF.php(950): {closure}() #2 Command line code(4): XF::asVisitor(Object(XFRM\\XF\\Entity\\User), Object(Closure)) #3 {main} thrown"}]},"jobs":[],"manager":{"class":"XF\\Job\\Manager","file":"/var/www/forums/newfi/public/src/XF/Job/Manager.php","methods":{"cancelUniqueJob":{"end":414,"excerpt":[{"line":402,"text":"\tpublic function cancelUniqueJob($uniqueId)"},{"line":403,"text":"\t{"},{"line":404,"text":"\t\t$job = $this->getUniqueJob($uniqueId);"},{"line":405,"text":"\t\tif ($job)"},{"line":406,"text":"\t\t{"},{"line":407,"text":"\t\t\t$this->cancelJob($job);"},{"line":408,"text":"\t\t\treturn true;"},{"line":409,"text":"\t\t}"},{"line":410,"text":"\t\telse"},{"line":411,"text":"\t\t{"},{"line":412,"text":"\t\t\treturn false;"},{"line":413,"text":"\t\t}"},{"line":414,"text":"\t}"}],"start":402},"runByIds":{"end":138,"excerpt":[{"line":100,"text":"\tpublic function runByIds(array $ids, $maxRunTime)"},{"line":101,"text":"\t{"},{"line":102,"text":"\t\tif ($maxRunTime < 2)"},{"line":103,"text":"\t\t{"},{"line":104,"text":"\t\t\t$maxRunTime = 2;"},{"line":105,"text":"\t\t}"},{"line":106,"text":""},{"line":107,"text":"\t\t$startTime = microtime(true);"},{"line":108,"text":"\t\t$result = null;"},{"line":109,"text":""},{"line":110,"text":"\t\tforeach ($ids AS $k => $id)"},{"line":111,"text":"\t\t{"},{"line":112,"text":"\t\t\t$remaining = $maxRunTime - (microtime(true) - $startTime);"},{"line":113,"text":"\t\t\tif ($remaining < 1)"},{"line":114,"text":"\t\t\t{"},{"line":115,"text":"\t\t\t\tbreak;"},{"line":116,"text":"\t\t\t}"},{"line":117,"text":""},{"line":118,"text":"\t\t\t$job = $this->getJob($id);"},{"line":119,"text":"\t\t\tif ($job && $job['trigger_date'] <= time())"},{"line":120,"text":"\t\t\t{"},{"line":121,"text":"\t\t\t\t$result = $this->runJobEntry($job, $remaining);"},{"line":122,"text":"\t\t\t}"},{"line":123,"text":"\t\t\telse"},{"line":124,"text":"\t\t\t{"},{"line":125,"text":"\t\t\t\t$result = null;"},{"line":126,"text":"\t\t\t}"},{"line":127,"text":""},{"line":128,"text":"\t\t\tif (!$result || $result->result === JobResult::RESULT_COMPLETED)"},{"line":129,"text":"\t\t\t{"},{"line":130,"text":"\t\t\t\tunset($ids[$k]);"},{"line":131,"text":"\t\t\t}"},{"line":132,"text":"\t\t}"},{"line":133,"text":""},{"line":134,"text":"\t\treturn ["},{"line":135,"text":"\t\t\t'result' => $result,"},{"line":136,"text":"\t\t\t'remaining' => $ids,"},{"line":137,"text":"\t\t];"},{"line":138,"text":"\t}"}],"start":100},"runJobEntry":{"end":249,"excerpt":[{"line":193,"text":"\tpublic function runJobEntry(array $job, $maxRunTime)"},{"line":194,"text":"\t{"},{"line":195,"text":"\t\t$affected = $this->db->update('xf_job', ["},{"line":196,"text":"\t\t\t'trigger_date' => time() + 15 * 60,"},{"line":197,"text":"\t\t\t'last_run_date' => time(),"},{"line":198,"text":"\t\t], 'job_id = ? AND trigger_date = ?', [$job['job_id'], $job['trigger_date']]);"},{"line":199,"text":"\t\tif (!$affected)"},{"line":200,"text":"\t\t{"},{"line":201,"text":"\t\t\t// job has already been taken, treat it as complete"},{"line":202,"text":"\t\t\treturn JobResult::newComplete($job['job_id']);"},{"line":203,"text":"\t\t}"},{"line":204,"text":""},{"line":205,"text":"\t\t$result = $this->runJobInternal($job, $maxRunTime);"},{"line":206,"text":""},{"line":207,"text":"\t\tswitch ($result->result)"},{"line":208,"text":"\t\t{"},{"line":209,"text":"\t\t\tcase JobResult::RESULT_COMPLETED:"},{"line":210,"text":"\t\t\t\t$this->cancelAndDequeueJob($job);"},{"line":211,"text":"\t\t\t\tbreak;"},{"line":212,"text":""},{"line":213,"text":"\t\t\tcase JobResult::RESULT_RESUME:"},{"line":214,"text":"\t\t\tcase JobResult::RESULT_REATTEMPT:"},{"line":215,"text":"\t\t\t\t$update = ["},{"line":216,"text":"\t\t\t\t\t'execute_data' => serialize($result->data),"},{"line":217,"text":"\t\t\t\t\t'trigger_date' => $result->continueDate ? (int) $result->continueDate : $job['trigger_date'],"},{"line":218,"text":"\t\t\t\t\t'last_run_date' => time(),"},{"line":219,"text":"\t\t\t\t];"},{"line":220,"text":""},{"line":221,"text":"\t\t\t\tif ($result->result === JobResult::RESULT_REATTEMPT)"},{"line":222,"text":"\t\t\t\t{"},{"line":223,"text":"\t\t\t\t\t$update['attempts'] = $job['attempts'] + 1;"},{"line":224,"text":"\t\t\t\t}"},{"line":225,"text":""},{"line":226,"text":"\t\t\t\t$this->db->update('xf_job', $update, 'job_id = ?', $job['job_id']);"},{"line":227,"text":""},{"line":228,"text":"\t\t\t\tbreak;"},{"line":229,"text":""},{"line":230,"text":"\t\t\tcase JobResult::RESULT_FAILED:"},{"line":231,"text":"\t\t\t\t$this->cancelAndDequeueJob($job);"},{"line":232,"text":""},{"line":233,"text":"\t\t\t\tif ($result->exception)"},{"line":234,"text":"\t\t\t\t{"},{"line":235,"text":"\t\t\t\t\t$jobForLogging = $job;"},{"line":236,"text":"\t\t\t\t\t$jobForLogging['execute_data'] = serialize($result->data);"},{"line":237,"text":"\t\t\t\t\t$this->logFailedJob($jobForLogging, $result->exception);"},{"line":238,"text":"\t\t\t\t}"},{"line":239,"text":""},{"line":240,"text":"\t\t\t\tbreak;"},{"line":241,"text":"\t\t}"},{"line":242,"text":""},{"line":243,"text":"\t\tif (!$job['manual_execute'])"},{"line":244,"text":"\t\t{"},{"line":245,"text":"\t\t\t$this->scheduleRunTimeUpdate();"},{"line":246,"text":"\t\t}"},{"line":247,"text":""},{"line":248,"text":"\t\treturn $result;"},{"line":249,"text":"\t}"}],"start":193},"runQueue":{"end":93,"excerpt":[{"line":70,"text":"\tpublic function runQueue($manual, $maxRunTime)"},{"line":71,"text":"\t{"},{"line":72,"text":"\t\tif ($maxRunTime < 2)"},{"line":73,"text":"\t\t{"},{"line":74,"text":"\t\t\t$maxRunTime = 2;"},{"line":75,"text":"\t\t}"},{"line":76,"text":""},{"line":77,"text":"\t\t$runnable = $this->getRunnable($manual);"},{"line":78,"text":"\t\t$startTime = microtime(true);"},{"line":79,"text":"\t\t$result = null;"},{"line":80,"text":""},{"line":81,"text":"\t\tforeach ($runnable AS $job)"},{"line":82,"text":"\t\t{"},{"line":83,"text":"\t\t\t$remaining = $maxRunTime - (microtime(true) - $startTime);"},{"line":84,"text":"\t\t\tif ($remaining < 1)"},{"line":85,"text":"\t\t\t{"},{"line":86,"text":"\t\t\t\tbreak;"},{"line":87,"text":"\t\t\t}"},{"line":88,"text":""},{"line":89,"text":"\t\t\t$result = $this->runJobEntry($job, $remaining);"},{"line":90,"text":"\t\t}"},{"line":91,"text":""},{"line":92,"text":"\t\treturn $result;"},{"line":93,"text":"\t}"}],"start":70}},"sha256":"bb62eaeb6d8e4ade4a5cef3a942b1ce0e67dec3af01ef50224700ee4765dbeb9"}}
NEWFI112_PRODUCTION={"contentindex":{"excerpt":[{"line":40,"text":"\t\tif (!$contentUrl)"},{"line":41,"text":"\t\t{"},{"line":42,"text":"\t\t\t/** @var Entity $content */"},{"line":43,"text":"\t\t\t$content = $this->app->findByContentType($contentType, $contentId);"},{"line":44,"text":""},{"line":45,"text":"\t\t\tif (!$content instanceof Entity)"},{"line":46,"text":"\t\t\t{"},{"line":47,"text":"\t\t\t\t// content probably deleted"},{"line":48,"text":"\t\t\t\treturn $this->complete();"},{"line":49,"text":"\t\t\t}"},{"line":50,"text":""},{"line":51,"text":"\t\t\tif (!method_exists($content, 'canView'))"},{"line":52,"text":"\t\t\t{"},{"line":53,"text":"\t\t\t\tthrow new \\LogicException("},{"line":54,"text":"\t\t\t\t\t'Could not determine content viewability; Implement XF\\Entity\\ViewableInterface for ' . get_class($content)"},{"line":55,"text":"\t\t\t\t);"},{"line":56,"text":"\t\t\t}"},{"line":57,"text":""},{"line":58,"text":"\t\t\tif (!$content instanceof LinkableInterface)"},{"line":59,"text":"\t\t\t{"},{"line":60,"text":"\t\t\t\tthrow new \\LogicException("},{"line":61,"text":"\t\t\t\t\t'Implement XF\\Entity\\LinkableInterface for ' . get_class($content)"},{"line":62,"text":"\t\t\t\t);"},{"line":63,"text":"\t\t\t}"},{"line":64,"text":""},{"line":65,"text":"\t\t\t$guestUser = \\XF::repository(UserRepository::class)->getGuestUser();"},{"line":66,"text":"\t\t\t$canView = \\XF::asVisitor($guestUser, function () use ($guestUser, $content)"},{"line":67,"text":"\t\t\t{"},{"line":68,"text":"\t\t\t\tif (!$guestUser->hasPermission('general', 'view'))"},{"line":69,"text":"\t\t\t\t{"},{"line":70,"text":"\t\t\t\t\treturn false;"},{"line":71,"text":"\t\t\t\t}"},{"line":72,"text":""},{"line":73,"text":"\t\t\t\treturn $content->canView($content);"},{"line":74,"text":"\t\t\t});"},{"line":75,"text":"\t\t\tif (!$canView)"},{"line":76,"text":"\t\t\t{"},{"line":77,"text":"\t\t\t\treturn $this->complete();"},{"line":78,"text":"\t\t\t}"},{"line":79,"text":""},{"line":80,"text":"\t\t\t$contentUrl = $content->getContentUrl(true);"},{"line":81,"text":"\t\t}"},{"line":82,"text":""}],"sha256":"b025d0658da8716a5cf5bbf85e63bb7885ac24715353da58a8bac9c5b7adeef0"},"counts":{"drafts":0,"resources":6,"tag_content":18,"tags":15,"updates":6,"versions":6},"errors":{"ids":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"old_fp":"737935e0f156defd5fcd89c9e05899bb3577964371bc436e65db7c7e461be69b","rows":[{"error_id":1,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":2,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":3,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":4,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":5,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":6,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":7,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":8,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":9,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":10,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":11,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":12,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":13,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":14,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":15,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":16,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":17,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":18,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":19,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":20,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":21,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":22,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":23,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":24,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":25,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":26,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":27,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":28,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":29,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":30,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":31,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":32,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":33,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":34,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":35,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":36,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":37,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":38,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":39,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"},{"error_id":40,"exception_type":"TypeError","filename":"src/XF/Job/ContentIndexNow.php","line":51,"message":"XF\\Job\\ContentIndexNow: method_exists(): Argument #1 ($object_or_class) must be of type object|string, null given"}]},"jobs":[{"decoded":{"content_id":8,"content_type":"resource_update"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2324,"manual_execute":0,"sha":"591830a19f29b2c3e29b892e964de5b94f7fae02f06c93bd80b932322f9004ef","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":8,"content_type":"resource"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2325,"manual_execute":0,"sha":"9ea9feade3b6f10bb73feaa687b4ef2517eceec0376c3c8bca2d8548a0e4ec0f","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":8,"content_type":"resource"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2326,"manual_execute":0,"sha":"9ea9feade3b6f10bb73feaa687b4ef2517eceec0376c3c8bca2d8548a0e4ec0f","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":9,"content_type":"resource_update"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2327,"manual_execute":0,"sha":"ca7e861203d277dcebcfe938cbd8b9ba6e2807f563a5a76e4abe0099208de304","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":9,"content_type":"resource"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2328,"manual_execute":0,"sha":"33d264199467673b8d10d00f8c80cd84dbaaadbbd31cd98f2f54cc98570800ea","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":9,"content_type":"resource"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2329,"manual_execute":0,"sha":"33d264199467673b8d10d00f8c80cd84dbaaadbbd31cd98f2f54cc98570800ea","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":8,"content_type":"resource"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2330,"manual_execute":0,"sha":"9ea9feade3b6f10bb73feaa687b4ef2517eceec0376c3c8bca2d8548a0e4ec0f","trigger_date":1789770301,"unique_key":null},{"decoded":{"content_id":9,"content_type":"resource"},"execute_class":"XF\\Job\\ContentIndexNow","job_id":2331,"manual_execute":0,"sha":"33d264199467673b8d10d00f8c80cd84dbaaadbbd31cd98f2f54cc98570800ea","trigger_date":1789770301,"unique_key":null}],"manager":{"class":"XF\\Job\\Manager","file":"/var/www/forums/newfi/public/src/XF/Job/Manager.php","methods":{"cancelUniqueJob":{"end":414,"excerpt":[{"line":402,"text":"\tpublic function cancelUniqueJob($uniqueId)"},{"line":403,"text":"\t{"},{"line":404,"text":"\t\t$job = $this->getUniqueJob($uniqueId);"},{"line":405,"text":"\t\tif ($job)"},{"line":406,"text":"\t\t{"},{"line":407,"text":"\t\t\t$this->cancelJob($job);"},{"line":408,"text":"\t\t\treturn true;"},{"line":409,"text":"\t\t}"},{"line":410,"text":"\t\telse"},{"line":411,"text":"\t\t{"},{"line":412,"text":"\t\t\treturn false;"},{"line":413,"text":"\t\t}"},{"line":414,"text":"\t}"}],"start":402},"runByIds":{"end":138,"excerpt":[{"line":100,"text":"\tpublic function runByIds(array $ids, $maxRunTime)"},{"line":101,"text":"\t{"},{"line":102,"text":"\t\tif ($maxRunTime < 2)"},{"line":103,"text":"\t\t{"},{"line":104,"text":"\t\t\t$maxRunTime = 2;"},{"line":105,"text":"\t\t}"},{"line":106,"text":""},{"line":107,"text":"\t\t$startTime = microtime(true);"},{"line":108,"text":"\t\t$result = null;"},{"line":109,"text":""},{"line":110,"text":"\t\tforeach ($ids AS $k => $id)"},{"line":111,"text":"\t\t{"},{"line":112,"text":"\t\t\t$remaining = $maxRunTime - (microtime(true) - $startTime);"},{"line":113,"text":"\t\t\tif ($remaining < 1)"},{"line":114,"text":"\t\t\t{"},{"line":115,"text":"\t\t\t\tbreak;"},{"line":116,"text":"\t\t\t}"},{"line":117,"text":""},{"line":118,"text":"\t\t\t$job = $this->getJob($id);"},{"line":119,"text":"\t\t\tif ($job && $job['trigger_date'] <= time())"},{"line":120,"text":"\t\t\t{"},{"line":121,"text":"\t\t\t\t$result = $this->runJobEntry($job, $remaining);"},{"line":122,"text":"\t\t\t}"},{"line":123,"text":"\t\t\telse"},{"line":124,"text":"\t\t\t{"},{"line":125,"text":"\t\t\t\t$result = null;"},{"line":126,"text":"\t\t\t}"},{"line":127,"text":""},{"line":128,"text":"\t\t\tif (!$result || $result->result === JobResult::RESULT_COMPLETED)"},{"line":129,"text":"\t\t\t{"},{"line":130,"text":"\t\t\t\tunset($ids[$k]);"},{"line":131,"text":"\t\t\t}"},{"line":132,"text":"\t\t}"},{"line":133,"text":""},{"line":134,"text":"\t\treturn ["},{"line":135,"text":"\t\t\t'result' => $result,"},{"line":136,"text":"\t\t\t'remaining' => $ids,"},{"line":137,"text":"\t\t];"},{"line":138,"text":"\t}"}],"start":100},"runJobEntry":{"end":249,"excerpt":[{"line":193,"text":"\tpublic function runJobEntry(array $job, $maxRunTime)"},{"line":194,"text":"\t{"},{"line":195,"text":"\t\t$affected = $this->db->update('xf_job', ["},{"line":196,"text":"\t\t\t'trigger_date' => time() + 15 * 60,"},{"line":197,"text":"\t\t\t'last_run_date' => time(),"},{"line":198,"text":"\t\t], 'job_id = ? AND trigger_date = ?', [$job['job_id'], $job['trigger_date']]);"},{"line":199,"text":"\t\tif (!$affected)"},{"line":200,"text":"\t\t{"},{"line":201,"text":"\t\t\t// job has already been taken, treat it as complete"},{"line":202,"text":"\t\t\treturn JobResult::newComplete($job['job_id']);"},{"line":203,"text":"\t\t}"},{"line":204,"text":""},{"line":205,"text":"\t\t$result = $this->runJobInternal($job, $maxRunTime);"},{"line":206,"text":""},{"line":207,"text":"\t\tswitch ($result->result)"},{"line":208,"text":"\t\t{"},{"line":209,"text":"\t\t\tcase JobResult::RESULT_COMPLETED:"},{"line":210,"text":"\t\t\t\t$this->cancelAndDequeueJob($job);"},{"line":211,"text":"\t\t\t\tbreak;"},{"line":212,"text":""},{"line":213,"text":"\t\t\tcase JobResult::RESULT_RESUME:"},{"line":214,"text":"\t\t\tcase JobResult::RESULT_REATTEMPT:"},{"line":215,"text":"\t\t\t\t$update = ["},{"line":216,"text":"\t\t\t\t\t'execute_data' => serialize($result->data),"},{"line":217,"text":"\t\t\t\t\t'trigger_date' => $result->continueDate ? (int) $result->continueDate : $job['trigger_date'],"},{"line":218,"text":"\t\t\t\t\t'last_run_date' => time(),"},{"line":219,"text":"\t\t\t\t];"},{"line":220,"text":""},{"line":221,"text":"\t\t\t\tif ($result->result === JobResult::RESULT_REATTEMPT)"},{"line":222,"text":"\t\t\t\t{"},{"line":223,"text":"\t\t\t\t\t$update['attempts'] = $job['attempts'] + 1;"},{"line":224,"text":"\t\t\t\t}"},{"line":225,"text":""},{"line":226,"text":"\t\t\t\t$this->db->update('xf_job', $update, 'job_id = ?', $job['job_id']);"},{"line":227,"text":""},{"line":228,"text":"\t\t\t\tbreak;"},{"line":229,"text":""},{"line":230,"text":"\t\t\tcase JobResult::RESULT_FAILED:"},{"line":231,"text":"\t\t\t\t$this->cancelAndDequeueJob($job);"},{"line":232,"text":""},{"line":233,"text":"\t\t\t\tif ($result->exception)"},{"line":234,"text":"\t\t\t\t{"},{"line":235,"text":"\t\t\t\t\t$jobForLogging = $job;"},{"line":236,"text":"\t\t\t\t\t$jobForLogging['execute_data'] = serialize($result->data);"},{"line":237,"text":"\t\t\t\t\t$this->logFailedJob($jobForLogging, $result->exception);"},{"line":238,"text":"\t\t\t\t}"},{"line":239,"text":""},{"line":240,"text":"\t\t\t\tbreak;"},{"line":241,"text":"\t\t}"},{"line":242,"text":""},{"line":243,"text":"\t\tif (!$job['manual_execute'])"},{"line":244,"text":"\t\t{"},{"line":245,"text":"\t\t\t$this->scheduleRunTimeUpdate();"},{"line":246,"text":"\t\t}"},{"line":247,"text":""},{"line":248,"text":"\t\treturn $result;"},{"line":249,"text":"\t}"}],"start":193},"runQueue":{"end":93,"excerpt":[{"line":70,"text":"\tpublic function runQueue($manual, $maxRunTime)"},{"line":71,"text":"\t{"},{"line":72,"text":"\t\tif ($maxRunTime < 2)"},{"line":73,"text":"\t\t{"},{"line":74,"text":"\t\t\t$maxRunTime = 2;"},{"line":75,"text":"\t\t}"},{"line":76,"text":""},{"line":77,"text":"\t\t$runnable = $this->getRunnable($manual);"},{"line":78,"text":"\t\t$startTime = microtime(true);"},{"line":79,"text":"\t\t$result = null;"},{"line":80,"text":""},{"line":81,"text":"\t\tforeach ($runnable AS $job)"},{"line":82,"text":"\t\t{"},{"line":83,"text":"\t\t\t$remaining = $maxRunTime - (microtime(true) - $startTime);"},{"line":84,"text":"\t\t\tif ($remaining < 1)"},{"line":85,"text":"\t\t\t{"},{"line":86,"text":"\t\t\t\tbreak;"},{"line":87,"text":"\t\t\t}"},{"line":88,"text":""},{"line":89,"text":"\t\t\t$result = $this->runJobEntry($job, $remaining);"},{"line":90,"text":"\t\t}"},{"line":91,"text":""},{"line":92,"text":"\t\treturn $result;"},{"line":93,"text":"\t}"}],"start":70}},"sha256":"bb62eaeb6d8e4ade4a5cef3a942b1ce0e67dec3af01ef50224700ee4765dbeb9"}}
NEWFI112_SAFE_REPORT={"changes_made":false,"decision":"PASS_CONTENTINDEXNOW_JOBMANAGER_SEMANTICS_CAPTURED","git_head":"e8f15ac7d52daa18470f4b2377a60aa3c2582b76","manager_methods":{"cancelUniqueJob":{"end":414,"excerpt":[{"line":402,"text":"\tpublic function cancelUniqueJob($uniqueId)"},{"line":403,"text":"\t{"},{"line":404,"text":"\t\t$job = $this->getUniqueJob($uniqueId);"},{"line":405,"text":"\t\tif ($job)"},{"line":406,"text":"\t\t{"},{"line":407,"text":"\t\t\t$this->cancelJob($job);"},{"line":408,"text":"\t\t\treturn true;"},{"line":409,"text":"\t\t}"},{"line":410,"text":"\t\telse"},{"line":411,"text":"\t\t{"},{"line":412,"text":"\t\t\treturn false;"},{"line":413,"text":"\t\t}"},{"line":414,"text":"\t}"}],"start":402},"runByIds":{"end":138,"excerpt":[{"line":100,"text":"\tpublic function runByIds(array $ids, $maxRunTime)"},{"line":101,"text":"\t{"},{"line":102,"text":"\t\tif ($maxRunTime < 2)"},{"line":103,"text":"\t\t{"},{"line":104,"text":"\t\t\t$maxRunTime = 2;"},{"line":105,"text":"\t\t}"},{"line":106,"text":""},{"line":107,"text":"\t\t$startTime = microtime(true);"},{"line":108,"text":"\t\t$result = null;"},{"line":109,"text":""},{"line":110,"text":"\t\tforeach ($ids AS $k => $id)"},{"line":111,"text":"\t\t{"},{"line":112,"text":"\t\t\t$remaining = $maxRunTime - (microtime(true) - $startTime);"},{"line":113,"text":"\t\t\tif ($remaining < 1)"},{"line":114,"text":"\t\t\t{"},{"line":115,"text":"\t\t\t\tbreak;"},{"line":116,"text":"\t\t\t}"},{"line":117,"text":""},{"line":118,"text":"\t\t\t$job = $this->getJob($id);"},{"line":119,"text":"\t\t\tif ($job && $job['trigger_date'] <= time())"},{"line":120,"text":"\t\t\t{"},{"line":121,"text":"\t\t\t\t$result = $this->runJobEntry($job, $remaining);"},{"line":122,"text":"\t\t\t}"},{"line":123,"text":"\t\t\telse"},{"line":124,"text":"\t\t\t{"},{"line":125,"text":"\t\t\t\t$result = null;"},{"line":126,"text":"\t\t\t}"},{"line":127,"text":""},{"line":128,"text":"\t\t\tif (!$result || $result->result === JobResult::RESULT_COMPLETED)"},{"line":129,"text":"\t\t\t{"},{"line":130,"text":"\t\t\t\tunset($ids[$k]);"},{"line":131,"text":"\t\t\t}"},{"line":132,"text":"\t\t}"},{"line":133,"text":""},{"line":134,"text":"\t\treturn ["},{"line":135,"text":"\t\t\t'result' => $result,"},{"line":136,"text":"\t\t\t'remaining' => $ids,"},{"line":137,"text":"\t\t];"},{"line":138,"text":"\t}"}],"start":100},"runJobEntry":{"end":249,"excerpt":[{"line":193,"text":"\tpublic function runJobEntry(array $job, $maxRunTime)"},{"line":194,"text":"\t{"},{"line":195,"text":"\t\t$affected = $this->db->update('xf_job', ["},{"line":196,"text":"\t\t\t'trigger_date' => time() + 15 * 60,"},{"line":197,"text":"\t\t\t'last_run_date' => time(),"},{"line":198,"text":"\t\t], 'job_id = ? AND trigger_date = ?', [$job['job_id'], $job['trigger_date']]);"},{"line":199,"text":"\t\tif (!$affected)"},{"line":200,"text":"\t\t{"},{"line":201,"text":"\t\t\t// job has already been taken, treat it as complete"},{"line":202,"text":"\t\t\treturn JobResult::newComplete($job['job_id']);"},{"line":203,"text":"\t\t}"},{"line":204,"text":""},{"line":205,"text":"\t\t$result = $this->runJobInternal($job, $maxRunTime);"},{"line":206,"text":""},{"line":207,"text":"\t\tswitch ($result->result)"},{"line":208,"text":"\t\t{"},{"line":209,"text":"\t\t\tcase JobResult::RESULT_COMPLETED:"},{"line":210,"text":"\t\t\t\t$this->cancelAndDequeueJob($job);"},{"line":211,"text":"\t\t\t\tbreak;"},{"line":212,"text":""},{"line":213,"text":"\t\t\tcase JobResult::RESULT_RESUME:"},{"line":214,"text":"\t\t\tcase JobResult::RESULT_REATTEMPT:"},{"line":215,"text":"\t\t\t\t$update = ["},{"line":216,"text":"\t\t\t\t\t'execute_data' => serialize($result->data),"},{"line":217,"text":"\t\t\t\t\t'trigger_date' => $result->continueDate ? (int) $result->continueDate : $job['trigger_date'],"},{"line":218,"text":"\t\t\t\t\t'last_run_date' => time(),"},{"line":219,"text":"\t\t\t\t];"},{"line":220,"text":""},{"line":221,"text":"\t\t\t\tif ($result->result === JobResult::RESULT_REATTEMPT)"},{"line":222,"text":"\t\t\t\t{"},{"line":223,"text":"\t\t\t\t\t$update['attempts'] = $job['attempts'] + 1;"},{"line":224,"text":"\t\t\t\t}"},{"line":225,"text":""},{"line":226,"text":"\t\t\t\t$this->db->update('xf_job', $update, 'job_id = ?', $job['job_id']);"},{"line":227,"text":""},{"line":228,"text":"\t\t\t\tbreak;"},{"line":229,"text":""},{"line":230,"text":"\t\t\tcase JobResult::RESULT_FAILED:"},{"line":231,"text":"\t\t\t\t$this->cancelAndDequeueJob($job);"},{"line":232,"text":""},{"line":233,"text":"\t\t\t\tif ($result->exception)"},{"line":234,"text":"\t\t\t\t{"},{"line":235,"text":"\t\t\t\t\t$jobForLogging = $job;"},{"line":236,"text":"\t\t\t\t\t$jobForLogging['execute_data'] = serialize($result->data);"},{"line":237,"text":"\t\t\t\t\t$this->logFailedJob($jobForLogging, $result->exception);"},{"line":238,"text":"\t\t\t\t}"},{"line":239,"text":""},{"line":240,"text":"\t\t\t\tbreak;"},{"line":241,"text":"\t\t}"},{"line":242,"text":""},{"line":243,"text":"\t\tif (!$job['manual_execute'])"},{"line":244,"text":"\t\t{"},{"line":245,"text":"\t\t\t$this->scheduleRunTimeUpdate();"},{"line":246,"text":"\t\t}"},{"line":247,"text":""},{"line":248,"text":"\t\treturn $result;"},{"line":249,"text":"\t}"}],"start":193},"runQueue":{"end":93,"excerpt":[{"line":70,"text":"\tpublic function runQueue($manual, $maxRunTime)"},{"line":71,"text":"\t{"},{"line":72,"text":"\t\tif ($maxRunTime < 2)"},{"line":73,"text":"\t\t{"},{"line":74,"text":"\t\t\t$maxRunTime = 2;"},{"line":75,"text":"\t\t}"},{"line":76,"text":""},{"line":77,"text":"\t\t$runnable = $this->getRunnable($manual);"},{"line":78,"text":"\t\t$startTime = microtime(true);"},{"line":79,"text":"\t\t$result = null;"},{"line":80,"text":""},{"line":81,"text":"\t\tforeach ($runnable AS $job)"},{"line":82,"text":"\t\t{"},{"line":83,"text":"\t\t\t$remaining = $maxRunTime - (microtime(true) - $startTime);"},{"line":84,"text":"\t\t\tif ($remaining < 1)"},{"line":85,"text":"\t\t\t{"},{"line":86,"text":"\t\t\t\tbreak;"},{"line":87,"text":"\t\t\t}"},{"line":88,"text":""},{"line":89,"text":"\t\t\t$result = $this->runJobEntry($job, $remaining);"},{"line":90,"text":"\t\t}"},{"line":91,"text":""},{"line":92,"text":"\t\treturn $result;"},{"line":93,"text":"\t}"}],"start":70}},"manager_sha256":"bb62eaeb6d8e4ade4a5cef3a942b1ce0e67dec3af01ef50224700ee4765dbeb9","patched_sha_production":"b025d0658da8716a5cf5bbf85e63bb7885ac24715353da58a8bac9c5b7adeef0","patched_sha_staging":"b025d0658da8716a5cf5bbf85e63bb7885ac24715353da58a8bac9c5b7adeef0","production_error_ids":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"production_jobs":[2324,2325,2326,2327,2328,2329,2330,2331]}
NEWFI112_DECISION=PASS_CONTENTINDEXNOW_JOBMANAGER_SEMANTICS_CAPTURED
NEWFI112_NEXT_GATE=COMPLETE_HOTFIX_ACCEPTANCE_AND_REMOVE_ONLY_PROVEN_STALE_ROWS

OUTPUT_END
CHAT_OUTPUT_END
