robfig / cron

a cron library for go
MIT License
13.14k stars 1.63k forks source link

Error parsing cron schedule on Linux/arm64 #528

Open ignazio-ingenito opened 2 months ago

ignazio-ingenito commented 2 months ago

I got this error on Docker using linux/arm64, on linux/amd64 everything is working fine

Cron schedule: "* * * * *"
2024/09/04 04:15:34 failed to parse int from "*: strconv.Atoi: parsing "\"*": invalid syntax
panic: failed to parse int from "*: strconv.Atoi: parsing "\"*": invalid syntax

Try to do

func Setup(f func()) (*cron.Cron, error) {
    // Set the timezone
    loc, err := time.LoadLocation("Europe/Rome")
    if err != nil {
        log.Panicln(err)
    }

    // Set the cron schedule
    schedule := os.Getenv("APP_CRON_SCHEDULE")
    if schedule == "" {
        schedule = "0 */4 * * *"
    }
    fmt.Println("Cron schedule: " + schedule)

    // Create the cronjob
    token := strings.Split(schedule, " ")
    c := &cron.Cron{}
    if len(token) == 6 {
        c = cron.New(cron.WithSeconds(), cron.WithLocation(loc))
    } else {
        c = cron.New(cron.WithLocation(loc))
    }
    // Add a job to the cron
    id, err := c.AddFunc(schedule, f)
    if err != nil {
        log.Panicln(err)
    }
    log.Printf("Cron id: %d\n", id)

    // Start the cron
    c.Start()
    return c, nil
}
norman-abramovitz commented 2 months ago

I suspect your docker image does not have the latest cron library as you said a linux/arm64 works just fine. This library does not seem to be maintained anymore given the simple go maintenance items it requires, outstanding issues and outstanding prs that it has.