handle possible panic (#88)

Reviewed-on: https://gitea.com/gitea/act_runner/pulls/88
Reviewed-by: Jason Song <i@wolfogre.com>
This commit is contained in:
Lunny Xiao 2023-03-28 23:51:38 +08:00
parent 1596e4b1fd
commit c8fad20f49
1 changed files with 35 additions and 26 deletions

View File

@ -57,24 +57,17 @@ func (p *Poller) Wait() {
p.routineGroup.Wait()
}
func (p *Poller) Poll(ctx context.Context) error {
l := log.WithField("func", "Poll")
for {
// check worker number
p.schedule()
select {
// wait worker ready
case <-p.ready:
case <-ctx.Done():
return nil
func (p *Poller) handle(ctx context.Context, l *log.Entry) {
defer func() {
if r := recover(); r != nil {
l.Errorf("handle task panic: %+v", r)
}
LOOP:
}()
for {
select {
case <-ctx.Done():
break LOOP
return
default:
task, err := p.pollTask(ctx)
if task == nil || err != nil {
@ -93,10 +86,26 @@ func (p *Poller) Poll(ctx context.Context) error {
l.Errorf("execute task: %v", err.Error())
}
})
break LOOP
return
}
}
}
func (p *Poller) Poll(ctx context.Context) error {
l := log.WithField("func", "Poll")
for {
// check worker number
p.schedule()
select {
// wait worker ready
case <-p.ready:
case <-ctx.Done():
return nil
}
p.handle(ctx, l)
}
}
func (p *Poller) pollTask(ctx context.Context) (*runnerv1.Task, error) {