| 15 | ) |
| 16 | |
| 17 | func (s *BackendScheduler) flushWorkCacheToBackend(ctx context.Context) error { |
| 18 | _, span := tracer.Start(ctx, "flushWorkCacheToBackend") |
| 19 | defer span.End() |
| 20 | |
| 21 | s.mtx.Lock() |
| 22 | defer s.mtx.Unlock() |
| 23 | |
| 24 | b, err := s.work.Marshal() |
| 25 | if err != nil { |
| 26 | metricWorkFlushesFailed.Inc() |
| 27 | return fmt.Errorf("failed to marshal work cache: %w", err) |
| 28 | } |
| 29 | |
| 30 | err = s.writer.Write(ctx, backend.WorkFileName, []string{}, bytes.NewReader(b), int64(len(b)), nil) |
| 31 | if err != nil { |
| 32 | return fmt.Errorf("failed to flush work cache: %w", err) |
| 33 | } |
| 34 | |
| 35 | return nil |
| 36 | } |
| 37 | |
| 38 | // loadWorkCache loads the work cache |
| 39 | func (s *BackendScheduler) loadWorkCache(ctx context.Context) error { |