From 526956af3585b23f287e9c910c1f28db5eb00367 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 12 May 2018 23:07:16 +0200 Subject: [PATCH] archiver: Read files/dirs in order --- internal/archiver/archiver.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/archiver/archiver.go b/internal/archiver/archiver.go index 5655a47b0..2d303e2ff 100644 --- a/internal/archiver/archiver.go +++ b/internal/archiver/archiver.go @@ -480,7 +480,16 @@ func (arch *Archiver) SaveTree(ctx context.Context, snPath string, atree *Tree, futureNodes := make(map[string]FutureNode) - for name, subatree := range atree.Nodes { + // iterate over the nodes of atree in lexicographic (=deterministic) order + names := make([]string, 0, len(atree.Nodes)) + for name := range atree.Nodes { + names = append(names, name) + } + sort.Stable(sort.StringSlice(names)) + + for _, name := range names { + subatree := atree.Nodes[name] + // test if context has been cancelled if ctx.Err() != nil { return nil, ctx.Err()