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
|
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) {
|
func (arch *Archiver) fileWorker(wg *sync.WaitGroup, p *Progress, done <-chan struct{}, entCh <-chan pipe.Entry) {
|
||||||
defer func() {
|
defer func() {
|
||||||
debug.Log("Archiver.fileWorker", "done")
|
debug.Log("Archiver.fileWorker", "done")
|
||||||
|
Loading…
Reference in New Issue
Block a user