mirror of
https://github.com/octoleo/restic.git
synced 2024-11-22 12:55:18 +00:00
repository: Do not report ignored packs in EachByPack
Ignored packs were reported as an empty pack by EachByPack. The most immediate effect of this is that the progress bar for rebuilding the index reports processing more packs than actually exist.
This commit is contained in:
parent
0d9ac78437
commit
cc4728d287
@ -276,10 +276,10 @@ func (idx *Index) EachByPack(ctx context.Context, packBlacklist restic.IDSet) <-
|
||||
m := &idx.byType[typ]
|
||||
m.foreach(func(e *indexEntry) bool {
|
||||
packID := idx.packs[e.packIndex]
|
||||
if _, ok := byPack[packID]; !ok {
|
||||
byPack[packID] = make([][]*indexEntry, restic.NumBlobTypes)
|
||||
}
|
||||
if !idx.final || !packBlacklist.Has(packID) {
|
||||
if _, ok := byPack[packID]; !ok {
|
||||
byPack[packID] = make([][]*indexEntry, restic.NumBlobTypes)
|
||||
}
|
||||
byPack[packID][typ] = append(byPack[packID][typ], e)
|
||||
}
|
||||
return true
|
||||
|
@ -613,3 +613,37 @@ func TestMixedEachByPack(t *testing.T) {
|
||||
}
|
||||
rtest.Equals(t, expected, reported)
|
||||
}
|
||||
|
||||
func TestEachByPackIgnoes(t *testing.T) {
|
||||
idx := repository.NewIndex()
|
||||
|
||||
ignores := restic.NewIDSet()
|
||||
expected := make(map[restic.ID]int)
|
||||
// create 50 packs with one blob each
|
||||
for i := 0; i < 50; i++ {
|
||||
packID := restic.NewRandomID()
|
||||
if i < 3 {
|
||||
ignores.Insert(packID)
|
||||
} else {
|
||||
expected[packID] = 1
|
||||
}
|
||||
blobs := []restic.Blob{
|
||||
{
|
||||
BlobHandle: restic.BlobHandle{Type: restic.DataBlob, ID: restic.NewRandomID()},
|
||||
Offset: 0,
|
||||
Length: 42,
|
||||
},
|
||||
}
|
||||
idx.StorePack(packID, blobs)
|
||||
}
|
||||
idx.Finalize()
|
||||
|
||||
reported := make(map[restic.ID]int)
|
||||
for bp := range idx.EachByPack(context.TODO(), ignores) {
|
||||
reported[bp.PackID]++
|
||||
rtest.Equals(t, 1, len(bp.Blobs)) // correct blob count
|
||||
b0 := bp.Blobs[0]
|
||||
rtest.Assert(t, b0.Type == restic.DataBlob && b0.Offset == 0 && b0.Length == 42, "wrong blob", b0)
|
||||
}
|
||||
rtest.Equals(t, expected, reported)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user