@@ -230,35 +230,49 @@ export class Runtime {
230230 // 如果有nextruntime,则加入重试队列
231231 this . joinRetryList ( script ) ;
232232 this . crontabSripts . push ( script ) ;
233- let flag = false ;
233+
234+ const ERROR_MESSAGES : Record < number , string > = {
235+ 0 : "crontabScript: cron expression failed" ,
236+ 2 : "crontabScript: onTick creation failed" ,
237+ 4 : "crontabScript: create cronjob failed" ,
238+ 6 : "crontabScript: cronjob start failed" ,
239+ } ;
240+
241+ const logError = ( ok : number , val : string , e : unknown ) =>
242+ this . logger . error (
243+ ERROR_MESSAGES [ ok ] ?? "crontabScript: execution failed" ,
244+ { uuid : script . uuid , crontab : val } ,
245+ Logger . E ( e )
246+ ) ;
247+
234248 const cronJobList : Array < CronJob > = [ ] ;
235249 script . metadata . crontab . forEach ( ( val ) => {
236- const { cronExpr , oncePos } = extractCronExpr ( val ) ;
250+ let ok = 0 ;
237251 try {
238- const cron = new CronJob ( cronExpr , this . crontabExec ( script , oncePos ) ) ;
252+ const { cronExpr, oncePos } = extractCronExpr ( val ) ;
253+ ok = 2 ;
254+ const onTick = this . crontabExec ( script , oncePos ) ;
255+ ok = 4 ;
256+ const cron = new CronJob ( cronExpr , onTick ) ;
257+ ok = 6 ;
239258 cron . start ( ) ;
259+ ok = 8 ;
240260 cronJobList . push ( cron ) ;
241261 } catch ( e ) {
242- flag = true ;
243- this . logger . error (
244- "create cronjob failed" ,
245- {
246- uuid : script . uuid ,
247- crontab : val ,
248- } ,
249- Logger . E ( e )
250- ) ;
262+ logError ( ok , val , e ) ;
251263 }
252264 } ) ;
253- if ( cronJobList . length !== script . metadata . crontab . length ) {
265+
266+ const allSucceeded = cronJobList . length === script . metadata . crontab . length ;
267+ if ( allSucceeded ) {
268+ this . cronJob . set ( script . uuid , cronJobList ) ;
269+ } else {
254270 // 有表达式失败了
255271 for ( const crontab of cronJobList ) {
256272 crontab . stop ( ) ;
257273 }
258- } else {
259- this . cronJob . set ( script . uuid , cronJobList ) ;
260274 }
261- return ! flag ;
275+ return allSucceeded ;
262276 }
263277
264278 crontabExec ( script : ScriptLoadInfo , oncePos : number ) {
0 commit comments