This commit is contained in:
sillyguodong 2023-07-24 15:10:58 +08:00
parent 5beaa5622a
commit e5461e3ccb
No known key found for this signature in database
GPG Key ID: 4A0646FA86256DF4

View File

@ -79,8 +79,10 @@ 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()
// Load the version value that was in the cache when the request was initiated.
v := p.tasksVersion.Load()
resp, err := p.client.FetchTask(reqCtx, connect.NewRequest(&runnerv1.FetchTaskRequest{ resp, err := p.client.FetchTask(reqCtx, connect.NewRequest(&runnerv1.FetchTaskRequest{
TasksVersion: p.tasksVersion.Load(), TasksVersion: v,
})) }))
if errors.Is(err, context.DeadlineExceeded) { if errors.Is(err, context.DeadlineExceeded) {
err = nil err = nil
@ -94,8 +96,8 @@ func (p *Poller) fetchTask(ctx context.Context) (*runnerv1.Task, bool) {
return nil, false return nil, false
} }
if resp.Msg.TasksVersion > p.tasksVersion.Load() { if resp.Msg.TasksVersion > v {
p.tasksVersion.Store(resp.Msg.TasksVersion) p.tasksVersion.CompareAndSwap(v, resp.Msg.TasksVersion)
} }
if resp.Msg.Task == nil { if resp.Msg.Task == nil {
@ -103,7 +105,7 @@ func (p *Poller) fetchTask(ctx context.Context) (*runnerv1.Task, bool) {
} }
// got a task, set `tasksVersion` to zero to focre query db in next request. // got a task, set `tasksVersion` to zero to focre query db in next request.
p.tasksVersion.Store(0) p.tasksVersion.CompareAndSwap(resp.Msg.TasksVersion, 0)
return resp.Msg.Task, true return resp.Msg.Task, true
} }