( ctx context.Context, taskID string, cache map[string]*taskLiveContext, )
| 384 | } |
| 385 | |
| 386 | func (m *Service) loadTaskLiveContext( |
| 387 | ctx context.Context, |
| 388 | taskID string, |
| 389 | cache map[string]*taskLiveContext, |
| 390 | ) (*taskLiveContext, error) { |
| 391 | if cached, ok := cache[taskID]; ok { |
| 392 | return cached, nil |
| 393 | } |
| 394 | |
| 395 | record, err := m.store.GetTask(ctx, taskID) |
| 396 | if err != nil { |
| 397 | return nil, err |
| 398 | } |
| 399 | dependencies, err := m.store.ListDependencies(ctx, record.ID) |
| 400 | if err != nil { |
| 401 | return nil, err |
| 402 | } |
| 403 | runs, err := m.store.ListTaskRuns(ctx, RunQuery{TaskID: record.ID}) |
| 404 | if err != nil { |
| 405 | return nil, err |
| 406 | } |
| 407 | status, err := m.canonicalTaskStatus(ctx, record, dependencies, runs) |
| 408 | if err != nil { |
| 409 | return nil, err |
| 410 | } |
| 411 | |
| 412 | runsByID := make(map[string]Run, len(runs)) |
| 413 | for _, run := range runs { |
| 414 | runsByID[run.ID] = run |
| 415 | } |
| 416 | |
| 417 | cached := &taskLiveContext{ |
| 418 | record: record, |
| 419 | reference: taskReferenceFromTask(record, status), |
| 420 | runsByID: runsByID, |
| 421 | } |
| 422 | cache[taskID] = cached |
| 423 | return cached, nil |
| 424 | } |
| 425 | |
| 426 | func runSummaryFromRun(run Run, maxAttempts int) *RunSummary { |
| 427 | summary := &RunSummary{ |
no test coverage detected