mirror of
https://github.com/octoleo/restic.git
synced 2024-11-30 00:33:57 +00:00
Remove unused function saveTree()
This commit is contained in:
parent
d66780a45d
commit
c9664e9eac
93
archiver.go
93
archiver.go
@ -212,99 +212,6 @@ func (arch *Archiver) SaveFile(p *Progress, node *Node) error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (arch *Archiver) saveTree(p *Progress, t *Tree) (backend.ID, error) {
|
||||
debug.Log("Archiver.saveTree", "saveTree(%v)\n", t)
|
||||
var wg sync.WaitGroup
|
||||
|
||||
// TODO: do all this in parallel
|
||||
for _, node := range t.Nodes {
|
||||
if node.tree != nil {
|
||||
id, err := arch.saveTree(p, node.tree)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
node.Subtree = id
|
||||
p.Report(Stat{Dirs: 1})
|
||||
} else if node.Type == "file" {
|
||||
if len(node.Content) > 0 {
|
||||
removeContent := false
|
||||
|
||||
// check content
|
||||
for _, id := range node.Content {
|
||||
packID, _, _, _, err := arch.s.Index().Lookup(id)
|
||||
if err != nil {
|
||||
debug.Log("Archiver.saveTree", "unable to find storage id for data blob %v: %v", id.Str(), err)
|
||||
arch.Error(node.path, nil, fmt.Errorf("unable to find storage id for data blob %v: %v", id.Str(), err))
|
||||
removeContent = true
|
||||
continue
|
||||
}
|
||||
|
||||
if ok, err := arch.s.Test(backend.Data, packID.String()); !ok || err != nil {
|
||||
debug.Log("Archiver.saveTree", "pack %v of blob %v not in repository (error is %v)", packID, id, err)
|
||||
arch.Error(node.path, nil, fmt.Errorf("pack %v of blob %v not in repository (error is %v)", packID, id, err))
|
||||
removeContent = true
|
||||
}
|
||||
}
|
||||
|
||||
if removeContent {
|
||||
debug.Log("Archiver.saveTree", "removing content for %s", node.path)
|
||||
node.Content = node.Content[:0]
|
||||
}
|
||||
}
|
||||
|
||||
if len(node.Content) == 0 {
|
||||
// start goroutine
|
||||
wg.Add(1)
|
||||
go func(n *Node) {
|
||||
defer wg.Done()
|
||||
|
||||
n.err = arch.SaveFile(p, n)
|
||||
p.Report(Stat{Files: 1})
|
||||
}(node)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
|
||||
usedIDs := backend.NewIDSet()
|
||||
|
||||
// check for invalid file nodes
|
||||
for _, node := range t.Nodes {
|
||||
if node.Type == "file" && node.Content == nil && node.err == nil {
|
||||
return nil, fmt.Errorf("node %v has empty content", node.Name)
|
||||
}
|
||||
|
||||
// remember used hashes
|
||||
if node.Type == "file" && node.Content != nil {
|
||||
for _, id := range node.Content {
|
||||
usedIDs.Insert(id)
|
||||
}
|
||||
}
|
||||
|
||||
if node.Type == "dir" && node.Subtree != nil {
|
||||
usedIDs.Insert(node.Subtree)
|
||||
}
|
||||
|
||||
if node.err != nil {
|
||||
err := arch.Error(node.path, nil, node.err)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// save error message in node
|
||||
node.Error = node.err.Error()
|
||||
}
|
||||
}
|
||||
|
||||
id, err := arch.SaveTreeJSON(t)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return id, nil
|
||||
}
|
||||
|
||||
func (arch *Archiver) fileWorker(wg *sync.WaitGroup, p *Progress, done <-chan struct{}, entCh <-chan pipe.Entry) {
|
||||
defer func() {
|
||||
debug.Log("Archiver.fileWorker", "done")
|
||||
|
Loading…
Reference in New Issue
Block a user