fetch task with index

This commit is contained in:
sillyguodong 2023-05-23 19:08:39 +08:00
parent 84386c1b16
commit cef297af9c
No known key found for this signature in database
GPG Key ID: 4A0646FA86256DF4

View File

@ -24,6 +24,9 @@ type Poller struct {
cfg *config.Config cfg *config.Config
} }
// taskIndex used to store the index of the last task fetched from the Gitea.
var taskIndex int64
func New(cfg *config.Config, client client.Client, runner *run.Runner) *Poller { func New(cfg *config.Config, client client.Client, runner *run.Runner) *Poller {
return &Poller{ return &Poller{
client: client, client: client,
@ -65,7 +68,9 @@ func (p *Poller) fetchTask(ctx context.Context) (*runnerv1.Task, bool) {
reqCtx, cancel := context.WithTimeout(ctx, p.cfg.Runner.FetchTimeout) reqCtx, cancel := context.WithTimeout(ctx, p.cfg.Runner.FetchTimeout)
defer cancel() defer cancel()
resp, err := p.client.FetchTask(reqCtx, connect.NewRequest(&runnerv1.FetchTaskRequest{})) resp, err := p.client.FetchTask(reqCtx, connect.NewRequest(&runnerv1.FetchTaskRequest{
TaskIndex: taskIndex,
}))
if errors.Is(err, context.DeadlineExceeded) { if errors.Is(err, context.DeadlineExceeded) {
err = nil err = nil
} }
@ -74,8 +79,18 @@ func (p *Poller) fetchTask(ctx context.Context) (*runnerv1.Task, bool) {
return nil, false return nil, false
} }
if resp == nil || resp.Msg == nil || resp.Msg.Task == nil { if resp == nil || resp.Msg == nil {
return nil, false return nil, false
} }
taskIndex = resp.Msg.TaskIndex
if resp.Msg.Task == nil {
return nil, false
}
// got a task, use 0 index to focre query db in next request.
taskIndex = 0
return resp.Msg.Task, true return resp.Msg.Task, true
} }