@@ -330,23 +330,46 @@ export const runJobs = async (args: RunJobsArgs): Promise<RunJobsResult> => {
330330 }
331331 const jobReq = isolateObjectProperty ( req , 'transactionID' )
332332
333- const workflowConfig : WorkflowConfig =
334- job . workflowSlug && jobsConfig . workflows ?. length
335- ? jobsConfig . workflows . find ( ( { slug } ) => slug === job . workflowSlug ) !
336- : {
337- slug : 'singleTask' ,
338- handler : async ( { job, tasks } ) => {
339- await tasks [ job . taskSlug as string ] ! ( '1' , {
340- input : job . input ,
341- } )
342- } ,
343- }
333+ let workflowConfig : undefined | WorkflowConfig = undefined
334+
335+ if ( job . workflowSlug && jobsConfig . workflows ?. length ) {
336+ workflowConfig = jobsConfig . workflows . find ( ( { slug } ) => slug === job . workflowSlug )
337+ } else if ( job . taskSlug && jobsConfig . tasks ?. length ) {
338+ const taskExists = jobsConfig . tasks . some ( ( { slug } ) => slug === job . taskSlug )
339+ if ( taskExists ) {
340+ workflowConfig = {
341+ slug : 'singleTask' ,
342+ handler : async ( { job, tasks } ) => {
343+ await tasks [ job . taskSlug as string ] ! ( '1' , {
344+ input : job . input ,
345+ } )
346+ } ,
347+ }
348+ }
349+ }
344350
345351 if ( ! workflowConfig ) {
352+ const slugLabel = job . taskSlug ? `task '${ job . taskSlug } '` : `workflow '${ job . workflowSlug } '`
353+ const errorMessage = `Job references ${ slugLabel } , which is not registered in payload.config.jobs. The slug may have been removed from config after the job was queued.`
354+
355+ if ( ! silent || ( typeof silent === 'object' && ! silent . error ) ) {
356+ payload . logger . error ( {
357+ msg : `Error running job ${ job . workflowSlug || `Task: ${ job . taskSlug } ` } id: ${ job . id } - ${ errorMessage } ` ,
358+ } )
359+ }
360+
361+ const updateJob = getUpdateJobFunction ( job , jobReq )
362+ await updateJob ( {
363+ error : { message : errorMessage } ,
364+ hasError : true ,
365+ processing : false ,
366+ totalTried : ( job . totalTried ?? 0 ) + 1 ,
367+ } )
368+
346369 return {
347370 id : job . id ,
348371 result : {
349- status : 'error' ,
372+ status : 'error-reached-max-retries ' ,
350373 } ,
351374 } // Skip jobs with no workflow configuration
352375 }
0 commit comments