39 lines
49 KiB
JSON
39 lines
49 KiB
JSON
{
|
|
"schema_version": 1,
|
|
"channel": "homelab-runtime",
|
|
"command_id": "NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-JOBMGR112",
|
|
"status": "OK",
|
|
"rc": 0,
|
|
"host": "pve01",
|
|
"mode": "read-only",
|
|
"component": "newfi-newfdom-contentindexnow-jobmanager-semantics-readonly",
|
|
"started_at_utc": "2026-09-18T22:12:40Z",
|
|
"finished_at_utc": "2026-09-18T22:12:43Z",
|
|
"reference_register_checked": true,
|
|
"reference_sha256": "5a3d8e5154c41cb582a4e0aca68090be1f0138918bf82131a948df326f9d8d66",
|
|
"error_register_checked": true,
|
|
"error_register_sha256": "3b09a553ec0f527ed3afeed4753f52a74ee3036045bbfb3c685e9f8af4ba7ba0",
|
|
"command_sha256": "91c6d213f03dd756e7d98ffc978a277df1a7b265ebac81ff022fb0b6af52f527",
|
|
"duplicate_failed_command_blocked": false,
|
|
"block_reason": null,
|
|
"execution_started": true,
|
|
"change_declared": false,
|
|
"result_contract_valid": true,
|
|
"result_contract_status": null,
|
|
"result_contract_error": null,
|
|
"command_rc": 0,
|
|
"changes_made": false,
|
|
"rollback_started": false,
|
|
"rollback_restored": null,
|
|
"mutation_outcome": "NO_MUTATION",
|
|
"sanitized": true,
|
|
"secrets_included": false,
|
|
"private_addresses_included": false,
|
|
"raw_evidence_retained_locally": true,
|
|
"raw_evidence_sha256": "0cda876282b18beff61dc397bbdb0f847d5cf6d20170e0df2d682a7aafa6967b",
|
|
"sanitized_output_sha256": "0cda876282b18beff61dc397bbdb0f847d5cf6d20170e0df2d682a7aafa6967b",
|
|
"output_truncated_in_json": false,
|
|
"full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt",
|
|
"output": "NEWFI112_BEGIN\nCOMMAND_ID=NEWFI-260919-NEWFDOM-CONTENTINDEXNOW-JOBMGR112\nNEWFI112_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\"}}\nNEWFI112_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\"}}\nNEWFI112_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]}\nNEWFI112_DECISION=PASS_CONTENTINDEXNOW_JOBMANAGER_SEMANTICS_CAPTURED\nNEWFI112_NEXT_GATE=COMPLETE_HOTFIX_ACCEPTANCE_AND_REMOVE_ONLY_PROVEN_STALE_ROWS\n"
|
|
}
|