-
Notifications
You must be signed in to change notification settings - Fork 568
/
worker.go
33 lines (30 loc) · 1.1 KB
/
worker.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package server
import (
"context"
"time"
"github.com/gogo/protobuf/types"
"github.com/pachyderm/pachyderm/v2/src/internal/backoff"
"github.com/pachyderm/pachyderm/v2/src/internal/errors"
"github.com/pachyderm/pachyderm/v2/src/internal/log"
"github.com/pachyderm/pachyderm/v2/src/server/worker/datum"
"go.uber.org/zap"
)
func (a *apiServer) worker(ctx context.Context) {
taskSource := a.env.TaskService.NewSource(ppsTaskNamespace)
backoff.RetryUntilCancel(ctx, func() error { //nolint:errcheck
err := taskSource.Iterate(ctx, func(ctx context.Context, input *types.Any) (_ *types.Any, retErr error) {
defer log.Span(ctx, "pps task", log.Proto("input", input))(log.Errorp(&retErr))
switch {
case datum.IsTask(input):
pachClient := a.env.GetPachClient(ctx)
return datum.ProcessTask(pachClient, input)
default:
return nil, errors.Errorf("unrecognized any type (%v) in pps worker", input.TypeUrl)
}
})
return errors.EnsureStack(err)
}, backoff.NewInfiniteBackOff(), func(err error, _ time.Duration) error {
log.Debug(ctx, "error in pps worker", zap.Error(err))
return nil
})
}