(ctx context.Context, cs *CurrentSnapshot)
| 536 | } |
| 537 | |
| 538 | func (e *Manager) loadRangeCheckpoints(ctx context.Context, cs *CurrentSnapshot) error { |
| 539 | blobs, err := blob.ListAllBlobs(ctx, e.st, RangeCheckpointIndexBlobPrefix) |
| 540 | if err != nil { |
| 541 | return errors.Wrap(err, "error loading full checkpoints") |
| 542 | } |
| 543 | |
| 544 | contentlog.Log2(ctx, e.log, |
| 545 | "ranges", |
| 546 | logparam.Int("numRanges", len(blobs)), |
| 547 | blobparam.BlobMetadataList("blobs", blobs)) |
| 548 | |
| 549 | var rangeCheckpointSets []*RangeMetadata |
| 550 | |
| 551 | for epoch1, m := range groupByEpochRanges(blobs) { |
| 552 | for epoch2, bms := range m { |
| 553 | if comp := completeset.FindFirst(bms); comp != nil { |
| 554 | erm := &RangeMetadata{ |
| 555 | MinEpoch: epoch1, |
| 556 | MaxEpoch: epoch2, |
| 557 | Blobs: comp, |
| 558 | } |
| 559 | |
| 560 | rangeCheckpointSets = append(rangeCheckpointSets, erm) |
| 561 | } |
| 562 | } |
| 563 | } |
| 564 | |
| 565 | cs.LongestRangeCheckpointSets = findLongestRangeCheckpoint(rangeCheckpointSets) |
| 566 | |
| 567 | return nil |
| 568 | } |
| 569 | |
| 570 | func (e *Manager) loadSingleEpochCompactions(ctx context.Context, cs *CurrentSnapshot) error { |
| 571 | blobs, err := blob.ListAllBlobs(ctx, e.st, SingleEpochCompactionBlobPrefix) |
no test coverage detected