| skipped 234 lines |
235 | 235 | | |
236 | 236 | | var updatedContents manifestContents |
237 | 237 | | for { |
238 | | - | ok, contents, ferr := nbs.mm.Fetch(ctx, nbs.stats) |
| 238 | + | ok, contents, _, ferr := nbs.mm.Fetch(ctx, nbs.stats) |
239 | 239 | | if ferr != nil { |
240 | 240 | | return manifestContents{}, ferr |
241 | 241 | | } else if !ok { |
| skipped 69 lines |
311 | 311 | | |
312 | 312 | | var updatedContents manifestContents |
313 | 313 | | for { |
314 | | - | ok, contents, ferr := nbs.mm.Fetch(ctx, nbs.stats) |
| 314 | + | ok, contents, _, ferr := nbs.mm.Fetch(ctx, nbs.stats) |
315 | 315 | | |
316 | 316 | | if ferr != nil { |
317 | 317 | | return manifestContents{}, ferr |
| skipped 248 lines |
566 | 566 | | t1 := time.Now() |
567 | 567 | | defer nbs.stats.OpenLatency.SampleTimeSince(t1) |
568 | 568 | | |
569 | | - | exists, contents, err := nbs.mm.Fetch(ctx, nbs.stats) |
| 569 | + | exists, contents, _, err := nbs.mm.Fetch(ctx, nbs.stats) |
570 | 570 | | |
571 | 571 | | if err != nil { |
572 | 572 | | return nil, err |
| skipped 324 lines |
897 | 897 | | func (nbs *NomsBlockStore) Rebase(ctx context.Context) error { |
898 | 898 | | nbs.mu.Lock() |
899 | 899 | | defer nbs.mu.Unlock() |
900 | | - | exists, contents, err := nbs.mm.Fetch(ctx, nbs.stats) |
| 900 | + | exists, contents, _, err := nbs.mm.Fetch(ctx, nbs.stats) |
901 | 901 | | if err != nil { |
902 | 902 | | return err |
903 | 903 | | } |
| skipped 524 lines |
1428 | 1428 | | // infinitely retries without backoff in the case off errOptimisticLockFailedTables |
1429 | 1429 | | } |
1430 | 1430 | | |
1431 | | - | ok, contents, err := nbs.mm.Fetch(ctx, &Stats{}) |
| 1431 | + | ok, contents, t, err := nbs.mm.Fetch(ctx, &Stats{}) |
1432 | 1432 | | if err != nil { |
1433 | 1433 | | return err |
1434 | 1434 | | } |
| skipped 1 lines |
1436 | 1436 | | return nil // no manifest exists |
1437 | 1437 | | } |
1438 | 1438 | | |
1439 | | - | return nbs.p.PruneTableFiles(ctx, contents) |
1440 | | - | } |
1441 | | - | |
1442 | | - | // OnlinePruneTableFiles deletes old table files that are no longer referenced in the manifest. |
1443 | | - | func (nbs *NomsBlockStore) OnlinePruneTableFiles(ctx context.Context) (err error) { |
1444 | | - | nbs.mu.Lock() |
1445 | | - | defer nbs.mu.Unlock() |
1446 | | - | |
1447 | | - | nbs.mm.LockForUpdate() |
1448 | | - | defer func() { |
1449 | | - | unlockErr := nbs.mm.UnlockForUpdate() |
1450 | | - | |
1451 | | - | if err == nil { |
1452 | | - | err = unlockErr |
1453 | | - | } |
1454 | | - | }() |
1455 | | - | |
1456 | | - | for { |
1457 | | - | // flush all tables and update manifest |
1458 | | - | err = nbs.updateManifest(ctx, nbs.upstream.root, nbs.upstream.root) |
1459 | | - | |
1460 | | - | if err == nil { |
1461 | | - | break |
1462 | | - | } else if err == errOptimisticLockFailedTables { |
1463 | | - | continue |
1464 | | - | } else { |
1465 | | - | return err |
1466 | | - | } |
1467 | | - | |
1468 | | - | // Same behavior as Commit |
1469 | | - | // infinitely retries without backoff in the case off errOptimisticLockFailedTables |
1470 | | - | } |
1471 | | - | |
1472 | | - | // nbs.mm.cache.Get(nbs.mm.Name()) |
1473 | | - | |
1474 | | - | ok, contents, t, err := nbs.mm.FetchWithTime(ctx, &Stats{}) |
1475 | | - | if err != nil { |
1476 | | - | return err |
1477 | | - | } |
1478 | | - | if !ok { |
1479 | | - | return nil // no manifest exists |
1480 | | - | } |
1481 | | - | |
1482 | | - | return nbs.p.OnlinePruneTableFiles(ctx, contents, t) |
| 1439 | + | return nbs.p.PruneTableFiles(ctx, contents, t) |
1483 | 1440 | | } |
1484 | 1441 | | |
1485 | 1442 | | func (nbs *NomsBlockStore) MarkAndSweepChunks(ctx context.Context, last hash.Hash, keepChunks <-chan []hash.Hash, dest chunks.ChunkStore) error { |
| skipped 57 lines |
1543 | 1500 | | return nbs.upstream |
1544 | 1501 | | }() |
1545 | 1502 | | |
1546 | | - | return nbs.p.PruneTableFiles(ctx, currentContents) |
| 1503 | + | return nbs.p.PruneTableFiles(ctx, currentContents, time.Now()) |
1547 | 1504 | | } else { |
1548 | 1505 | | fileIdToNumChunks := tableSpecsToMap(specs) |
1549 | 1506 | | err = destNBS.AddTableFilesToManifest(ctx, fileIdToNumChunks) |
| skipped 163 lines |