11import { childLogger , Logger } from "@foxxmd/logging" ;
2+ import dayjs from "dayjs" ;
23import { CronJob , SimpleIntervalJob , ToadScheduler } from "toad-scheduler" ;
34import { createHeartbeatTask } from "./tasks/heartbeatTask.js" ;
45import { OperatorConfig } from "../common/infrastructure/OperatorConfig.js" ;
56import { createProcessPendingDigestsTask } from "./tasks/createProcessPendingDigestsTask.js" ;
6- import { mergeArr } from "../utils/index.js" ;
7+ import { Cron } from 'croner' ;
78
89export const initScheduler = ( config : OperatorConfig , parentLogger : Logger ) => {
910 const scheduler = new ToadScheduler ( )
@@ -17,11 +18,16 @@ export const initScheduler = (config: OperatorConfig, parentLogger: Logger) => {
1718 for ( const digest of config . digests ) {
1819 const crons = Array . isArray ( digest . cron ) ? digest . cron : [ digest . cron ] ;
1920 for ( const cron of crons ) {
20- scheduler . addCronJob ( new CronJob ( {
21- cronExpression : cron ,
22- } ,
23- createProcessPendingDigestsTask ( `${ digest . name !== undefined ? `${ digest . name } ` : '' } ${ cron } ` , digest , parentLogger ) ) ) ;
24- logger . info ( `Added Digest ${ digest . slug } to run ${ digest . cron } ` ) ;
21+ try {
22+ const nextCron = Cron ( cron ) . nextRun ( ) ;
23+ scheduler . addCronJob ( new CronJob ( {
24+ cronExpression : cron ,
25+ } ,
26+ createProcessPendingDigestsTask ( `${ digest . name !== undefined ? `${ digest . name } ` : '' } ${ cron } ` , digest , parentLogger , cron ) ) ) ;
27+ logger . info ( `Digest ${ digest . slug } started with CRON ${ cron . padEnd ( 16 , ' ' ) } -> Next run at ${ dayjs ( nextCron ) . format ( ) } ` ) ;
28+ } catch ( e ) {
29+ logger . error ( new Error ( `Failed to create digest for cron ${ cron } ` , { cause : e } ) )
30+ }
2531 }
2632 }
2733
0 commit comments