Out of all the job types that are run in production we need to select candidates for being the first transferred to the new #eventbus infrastructure. Requirements:
- Low volume
- Idempotence - the job would initially be double-processed by old and new infra, so doing it twice shouldn't cause any trouble
- Preferably low importance - if something goes wrong it should be either easily fixable or possible to ignore
- As simple as possible - no delayed executions, root/leaf job splitting, no recursion and no importance for deduplication.
For reference here's the list of job types currently executed in production with some notes:
I've looked through the following jobs:
- AssembleUploadChunks - not idempotent
- BounceHandlerJob - not idempotent
- BounceHandlerNotificationJob - not idempotent
- categoryMembershipChange - not idempotent
- cdnPurge - uses delayed execution
- CentralAuthCreateLocalAccountJob - not idempotent
- ChangeNotification - too high rate
Regarding the search jobs let's consult @EBernhardson
- cirrusSearchCheckerJob
- cirrusSearchDeleteArchive
- cirrusSearchDeletePages
- cirrusSearchElasticaWrite
- cirrusSearchIncomingLinkCount
- cirrusSearchLinksUpdate
- cirrusSearchLinksUpdatePrioritized
- cirrusSearchMassIndex
- cirrusSearchOtherIndex
- [[ https://github.com/wikimedia/mediawiki-extensions-Cognate/blob/033830c5445f415dc2d344deafaa4c7a1730eb3e/src/CacheUpdateJob.php | CognateCacheUpdateJob ]] - basically a wrapper over HTMLCacheUpdatejob
- [[ https://github.com/wikimedia/mediawiki-extensions-Cognate/blob/033830c5445f415dc2d344deafaa4c7a1730eb3e/src/LocalJobSubmitJob.php | CognateLocalJobSubmitJob ]] - basically submits a job to a bunch of other sites
- [[ https://github.com/wikimedia/mediawiki-extensions-WikibaseQualityConstraints/blob/331d8ddfffd0de9def5354777ef14ebfa3d0c2ea/includes/UpdateConstraintsTableJob.php | constraintsTableUpdate ]] - some Wikidata job, not clear
- [[ https://github.com/wikimedia/mediawiki/blob/aeedfb8526e9d221553e430437a7572a6da2ba65/includes/jobqueue/jobs/DeleteLinksJob.php | deleteLinks ]] a very good candidate, low volume (<1/s), idempotent ❤️
EchoNotificationDeleteJob
EchoNotificationJob
enotifNotify
enqueue
flaggedrevs_CacheUpdate
globalUsageCachePurge
GlobalUserPageLocalJobSubmitJob
gwtoolsetGWTFileBackendCleanupJob
gwtoolsetUploadMediafileJob
gwtoolsetUploadMetadataJob
htmlCacheUpdate
LocalGlobalUserPageCacheUpdateJob
LocalPageMoveJob
LocalRenameUserJob
LoginNotifyChecks
MassMessageJob
MassMessageSubmitJob
MessageGroupStatesUpdaterJob
MessageIndexRebuildJob
ORESFetchScoreJob
PublishStashedFile
recentChangesUpdate
RecordLintJob
refreshLinks
refreshLinksPrioritized
renameUser
ThumbnailRender
TranslatablePageMoveJob
TranslateDeleteJob
TranslateRenderJob
TranslationsUpdateJob
TTMServerMessageUpdateJob
updateBetaFeaturesUserCounts
UpdateRepoOnDelete
UpdateRepoOnMove
webVideoTranscode
webVideoTranscodePrioritized
wikibase-addUsagesForPage
wikibase-InjectRCRecords