jobrunner icon indicating copy to clipboard operation
jobrunner copied to clipboard

runtime error: invalid memory

Open RealLau opened this issue 4 years ago • 1 comments

I just encountered a runtime error, the logs is as below:

goroutine 1526 [running]:
log.(*Logger).Panic(0xc0005440f0, 0xc000467c00, 0x3, 0x3)
        /Users/smy/sdk/go1.13.8/src/log/log.go:212 +0xaa
github.com/bamzi/jobrunner.(*Job).Run.func1()
        /Users/smy/go/pkg/mod/github.com/bamzi/[email protected]/jobrunner.go:55 +0x1a5
panic(0xe86880, 0x1804d70)
        /Users/smy/sdk/go1.13.8/src/runtime/panic.go:679 +0x1b2
main.UpdateNews.Run()
        /Users/smy/go/src/GBlog/main.go:29 +0x89
github.com/bamzi/jobrunner.(*Job).Run(0xc0000a7090)
        /Users/smy/go/pkg/mod/github.com/bamzi/[email protected]/jobrunner.go:75 +0x188
github.com/robfig/cron/v3.(*Cron).startJob.func1(0xc000248b40, 0x10f8a80, 0xc0000a7090)
        /Users/smy/go/pkg/mod/github.com/robfig/cron/[email protected]/cron.go:307 +0x69
created by github.com/robfig/cron/v3.(*Cron).startJob
        /Users/smy/go/pkg/mod/github.com/robfig/cron/[email protected]/cron.go:305 +0x73
^[[97;45m[JobRunner] 2020/09/07 - 09:14:54 Started... ^[[0m

my code is simple as send a http get request in a every 5min job:

func (e UpdateNews) Run() {
	resp, err := http.Get("https://sample_site.com/common/update_news/")
	if err != nil {
		fmt.Println("Call update news failed")
	}
	var res map[string]interface{}
	json.NewDecoder(resp.Body).Decode(&res)
	resCode := fmt.Sprintf("%v", res["code"])
	if resCode == "0" {
		fmt.Printf("Every 5 mins update news success.")
	}
}
func main(){
jobrunner.Start() // optional: jobrunner.Start(pool int, concurrent int) (10, 1)
	err := jobrunner.Schedule("@every 300s", UpdateNews{})
	if err != nil {
		panic(err)
	}
}

RealLau avatar Sep 07 '20 06:09 RealLau

You need to declare UpdateNews{}

type UpdateNews struct {}

Also the error response from jobrunner.Schedule... is related to parsing of cron. Maybe 300s should 5m

bamzi avatar Sep 07 '20 15:09 bamzi