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