27 use Psr\Log\LoggerInterface;
35 private LoggerInterface $logger;
52 parent::__construct(
'parsoidCachePrewarm',
$params );
55 $this->logger = LoggerFactory::getInstance(
'ParsoidCachePrewarmJob' );
56 $this->parsoidOutputAccess = $parsoidOutputAccess;
57 $this->pageLookup = $pageLookup;
58 $this->revisionLookup = $revisionLookup;
77 $pageId = $page->getId();
83 "parsoidCachePrewarm:$pageId:$revisionId:$pageTouched:{$params['options']}"
86 $opts = [
'removeDuplicates' =>
true ];
89 'parsoidCachePrewarm',
91 'revId' => $revisionId,
93 'page_touched' => $pageTouched,
99 private function doParsoidCacheUpdate() {
100 $page = $this->pageLookup->getPageById( $this->params[
'pageId'] );
101 $revId = $this->params[
'revId'];
103 if ( $page ===
null ) {
105 $this->logger->info(
"Page with ID {$this->params['pageId']} not found" );
111 'ParsoidCachePrewarmJob: The ID of the new revision does not match the page\'s current revision ID'
116 $rev = $this->revisionLookup->getRevisionById( $revId );
123 $renderReason = $this->params[
'causeAction'] ?? $this->command;
124 $parserOpts->setRenderReason( $renderReason );
126 $mainSlot = $rev->getSlot( SlotRecord::MAIN );
127 if ( !$this->parsoidOutputAccess->supportsContentModel( $mainSlot->getModel() ) ) {
128 $this->logger->debug( __METHOD__ .
': Parsoid does not support content model ' . $mainSlot->getModel() );
132 $this->logger->debug( __METHOD__ .
': generating Parsoid output' );
135 $options = $this->params[
'options'] ?? 0;
138 $status = $this->parsoidOutputAccess->getParserOutput(
142 $options | ParsoidOutputAccess::OPT_LOG_LINT_DATA
145 if ( !$status->isOK() ) {
146 $this->logger->error( __METHOD__ .
': Parsoid error', [
147 'errors' => $status->getErrors(),
149 'rev' => $rev->getId(),
155 $this->doParsoidCacheUpdate();
Job queue task description base code.
Class to both describe a background job and handle jobs.
array $params
Array of job parameters.
static newRootJobParams( $key)
Get "root job" parameters for a task.
static newFromAnon()
Get a ParserOptions object for an anonymous user.
static newSpec(int $revisionId, PageRecord $page, array $params=[])
__construct(array $params, ParsoidOutputAccess $parsoidOutputAccess, PageLookup $pageLookup, RevisionLookup $revisionLookup)
Service for looking up information about wiki pages.
getDBkey()
Get the page title in DB key form.