diff --git a/gui/assets/lang/lang-en.json b/gui/assets/lang/lang-en.json index 1f8d30337..9c816f975 100644 --- a/gui/assets/lang/lang-en.json +++ b/gui/assets/lang/lang-en.json @@ -10,6 +10,7 @@ "Addresses": "Addresses", "All Data": "All Data", "Allow Anonymous Usage Reporting?": "Allow Anonymous Usage Reporting?", + "Alphabetic": "Alphabetic", "An external command handles the versioning. It has to remove the file from the synced folder.": "An external command handles the versioning. It has to remove the file from the synced folder.", "Anonymous Usage Reporting": "Anonymous Usage Reporting", "Any devices configured on an introducer device will be added to this device as well.": "Any devices configured on an introducer device will be added to this device as well.", @@ -45,6 +46,7 @@ "Enter ignore patterns, one per line.": "Enter ignore patterns, one per line.", "Error": "Error", "External File Versioning": "External File Versioning", + "File Pull Order": "File Pull Order", "File Versioning": "File Versioning", "File permission bits are ignored when looking for changes. Use on FAT file systems.": "File permission bits are ignored when looking for changes. Use on FAT file systems.", "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by Syncthing.": "Files are moved to date stamped versions in a .stversions folder when replaced or deleted by Syncthing.", @@ -67,6 +69,7 @@ "Introducer": "Introducer", "Inversion of the given condition (i.e. do not exclude)": "Inversion of the given condition (i.e. do not exclude)", "Keep Versions": "Keep Versions", + "Largest First": "Largest First", "Last File Received": "Last File Received", "Last seen": "Last seen", "Later": "Later", @@ -80,11 +83,13 @@ "Never": "Never", "New Device": "New Device", "New Folder": "New Folder", + "Newest First": "Newest First", "No": "No", "No File Versioning": "No File Versioning", "Notice": "Notice", "OK": "OK", "Off": "Off", + "Oldest First": "Oldest First", "Out Of Sync": "Out Of Sync", "Out of Sync Items": "Out of Sync Items", "Outgoing Rate Limit (KiB/s)": "Outgoing Rate Limit (KiB/s)", @@ -97,6 +102,7 @@ "Preview Usage Report": "Preview Usage Report", "Quick guide to supported patterns": "Quick guide to supported patterns", "RAM Utilization": "RAM Utilization", + "Random": "Random", "Release Notes": "Release Notes", "Rescan": "Rescan", "Rescan All": "Rescan All", @@ -124,6 +130,7 @@ "Shutdown Complete": "Shutdown Complete", "Simple File Versioning": "Simple File Versioning", "Single level wildcard (matches within a directory only)": "Single level wildcard (matches within a directory only)", + "Smallest First": "Smallest First", "Source Code": "Source Code", "Staggered File Versioning": "Staggered File Versioning", "Start Browser": "Start Browser", diff --git a/gui/index.html b/gui/index.html index 50e9ea581..d16d7764c 100644 --- a/gui/index.html +++ b/gui/index.html @@ -239,6 +239,17 @@ Rescan Interval {{folder.rescanIntervalS}} s + + File Pull Order + + Random + Alphabetic + Smallest First + Largest First + Oldest First + Newest First + + File Versioning @@ -625,6 +636,7 @@
+
@@ -643,7 +655,20 @@

File permission bits are ignored when looking for changes. Use on FAT file systems.

+ +
+
+ + +
diff --git a/internal/auto/gui.files.go b/internal/auto/gui.files.go index 7f3ea31a5..1b22cd8cb 100644 --- a/internal/auto/gui.files.go +++ b/internal/auto/gui.files.go @@ -5,7 +5,7 @@ import ( ) const ( - AssetsBuildDate = "Wed, 22 Apr 2015 00:36:10 GMT" + AssetsBuildDate = "Sat, 25 Apr 2015 06:53:34 GMT" ) func Assets() map[string][]byte { @@ -37,7 +37,7 @@ func Assets() map[string][]byte { assets["assets/lang/lang-en-GB.json"], _ = base64.StdEncoding.DecodeString("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") - assets["assets/lang/lang-en.json"], _ = base64.StdEncoding.DecodeString("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") + assets["assets/lang/lang-en.json"], _ = base64.StdEncoding.DecodeString("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") assets["assets/lang/lang-es.json"], _ = base64.StdEncoding.DecodeString("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") @@ -75,7 +75,7 @@ func Assets() map[string][]byte { assets["assets/lang/valid-langs.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/ypLLFIoS8zJTPFJzEsvVrBViFZKSlXSUUpKBxLJiSCiGEikgMRSc0BEHpjQdXcC0SC5tCIgkVEKJDJLgEQOiMhLAhEg9Xkg9QUgVkGJrlMQhA4IAdJFIC3FZUCiBGRCaTaQqMrQdfaD0CHhSrFcAAAAAP//AQAA//+S0NbanwAAAA==") - assets["index.html"], _ = base64.StdEncoding.DecodeString("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") + assets["index.html"], _ = base64.StdEncoding.DecodeString("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") assets["modal.html"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/3yTUW+bMBDH3/cpbjwsrVRCW/UpSzptkSZN6qRK7csejX2AV2Mj+0jHEN99h2EsrdI9JDbmfnf3/5/ZKn0AaUQIu6R2ShgohMIESOTaKvy1S9KrBGyZCiKfKkEizYV8Ut41u6TvGXUB4ROQbxE2sAokSMsVDMMr6gm73AmvIvXFOYPCnkX6fAy+fQewfZ+mvGQZ7F3TeV1WBGf7c7i+vLqBxwrhobOSKm1L+NxS5XxYx/CJeax0gAfXeonMK4SvztfAZ6HNf6IkIAfESQh9HcAV8eG7+62NEXDf5kbLKdGdlmgDXsBhDdfryzV8K0CA5JYW6v4OnkUA6wiUDuR13hIqeNZUcQDXLLTBiyndD9eCFBZcTkLzYhEEQUXUbLKsnuqvnS8zzppxvWwUlabRkNfDSZUWxpXR2vm8X01vTLnagBG+xMnMU7R0ltDS/P5URIU8fQ/CoKfpP+37caZtGIaFY7K6eQmSJoNHARwSGlbNjepil2gunfwlStM11XgCy46rjMtYY5uN4HGmvo/Zh+Ff+ay6WURkrOJtRblTXfSLvLBBmlbh2+TcbbyWycs8hXN8c44t4JkTa6CuwV0yPSxMThb4lyosRGso7kOdQPwU+MrUesnMiqNT/zHHY+0OuFjzAevQfJyoqMoIwtv92PQcsc2mfk4oXbbzZl7+AAAA//8BAAD//53P618IBAAA") @@ -83,7 +83,7 @@ func Assets() map[string][]byte { assets["scripts/syncthing/core/controllers/eventController.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/7RUQYvbPBC951fMtyzY4XO9SaGnkPbQ7sKeeuiWHkoPij22BbIUNNKGUPLfO5ITr+M4bCmtLnFGM2/ePD3pWVgocePr+2fUjmANlVCEq9lM6NorYfPWlF5hmtBeF66Rus4LYzGZz4AXf2tnjVJo0yRCfOwDSQaV5xppNKS3VJgtZnDbOLedw89YHVbiCYGclYVLuOsp3OXnSpCLsExMe6VWfUIgHnYfP/HWYlAZNsgXBRI96DBPz6EUTgxbh3V3B98a1PDlNB1YJCcsS7FrpEJwDYIyHN/yUGGfJ9bYIUoCqcdwW2tqxqBYubFmR2iBk8m0CFslXGVsS9zGeasJBLxdLCAlqYvYbAzXoCjREjSCYIPMtFKeGixhJ10Te3RIzKvEgDXPui1tIAycjwGfGqa9ESQLodQeWhQ6cBUugg2m6zvyNOgyELrsUrhuDLrjXG0ciML5CMsnwBpUXp33lxWk/02dQ1horbEPujun1cV2N+d5/DA7+3t0zS220qXJ18fPmo+MvbqaXbA4euc9LKaoROX4oO5F0aQvDsJgxan8E+rgKl1LC4tVJqPY3qZObyLoTQbxN5fl6cvtw4Xpvq9I0kkwFT1T4gJvAuow/x1lh/cxcPoehVKoa3bcG1j+OAfpL+i4nMccnQlb7Em2aLwb6D2lYXxB8hpd6q1iHyP8D8ldHIs+xGu0TjjUtZ5PipMf34e0fyeu5EVHpkdfjgXK4B3ftpfgYfQIHctefYIuTFtVk679OwopyW3Wy+TfKrNcXJXmD9i9xmqSTTD0LwAAAP//AQAA//8bMA983gYAAA==") - assets["scripts/syncthing/core/controllers/syncthingController.js"], _ = base64.StdEncoding.DecodeString("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") + assets["scripts/syncthing/core/controllers/syncthingController.js"], _ = base64.StdEncoding.DecodeString("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") assets["scripts/syncthing/core/directives/identiconDirective.js"], _ = base64.StdEncoding.DecodeString("H4sIAAAJbogA/5xVTVPbMBC951dsZwp2GkcOdHpJ6s4wDMxwgENz6IEyHVdWYk0VKSPLcSnkv3clJ8F2FL50wUj79r2V3m5SOS9FqslCZaVgYVDcS2pyLueEKs2Cfg9wkYxrRg1fYQDPmDScKhlEcBt8rLjMVIXfsxKBXEkIN3t9eHBgu1aphmI1v5lCAkFuzHIcx1VVkeozUXoen45GoxjPg0lvB9nlu9oShqtUlCyCgv9jzeQNAkyfKVouEEGoZqlhF4LZ/26moeOPILA8/ck+OlelyC65EN+x1DODqZ5K0qqKgCrRpbVLM1NqCR+2dZNlqgt2JU2tl9A81ecqY2fGpoGBzQOf6ioiOBn14QhOO4LWh/Rdc62Vfq9Cy2nZ4PjYqUiSBBY8ywQ7R+RLChaOGyMvlW5xP0/rSIeObwgnL9Y5e/sLWJj152te38bZ5/eopYYUDHmN5r9Lg1b/i7YO69eyp1PnuwEER13/HMDfW7x983fiK56ZHHNswW/B5ozPc+MD76Hxaki6XDKZnedcZKFFvOxHG+XZVdX+Jl6hz00b3/lTW8kdrVZnu0gq0qLAGhtDqSPcmS+p/zw+wpf26e5uEuzDEcQurh2yk4kx16nJCWVc1I0UY9vWlm4h+AzqzvdbFQ8wVT0ajJpiLXIe9olmS5FSFsa3P3/8uos5FuV9rBn2nvNUAqOJvW74WquGwUC3h+4ezLV84+JdT36D4ckEhsMDvdWsqjsin5ryOaSj92A8xfkJmzPv9ZQ+2uYEc1PL00vNtT546j/Z323vrHsd+9UDcjV/ktEI2Rw/dDAFWoaaMQQXQdT2OlVLNj5kOgQkQVtNGy64/DNuTFyXLgJWj9AI0m3fFb6r34RtBkkoWdX44XapSN0U3cnSa3+t7zDgPwAAAP//AQAA//9afsjulQgAAA==") diff --git a/internal/config/config.go b/internal/config/config.go index 607c87770..6291835ef 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -82,6 +82,7 @@ type FolderConfiguration struct { Copiers int `xml:"copiers" json:"copiers"` // This defines how many files are handled concurrently. Pullers int `xml:"pullers" json:"pullers"` // Defines how many blocks are fetched at the same time, possibly between separate copier routines. Hashers int `xml:"hashers" json:"hashers"` // Less than one sets the value to the number of cores. These are CPU bound due to hashing. + Order PullOrder `xml:"order" json:"order"` Invalid string `xml:"-" json:"invalid"` // Set at runtime when there is an error, not saved @@ -678,3 +679,57 @@ func randomString(l int) string { } return string(bs) } + +type PullOrder int + +const ( + OrderRandom PullOrder = iota // default is random + OrderAlphabetic + OrderSmallestFirst + OrderLargestFirst + OrderOldestFirst + OrderNewestFirst +) + +func (o PullOrder) String() string { + switch o { + case OrderRandom: + return "random" + case OrderAlphabetic: + return "alphabetic" + case OrderSmallestFirst: + return "smallestFirst" + case OrderLargestFirst: + return "largestFirst" + case OrderOldestFirst: + return "oldestFirst" + case OrderNewestFirst: + return "newestFirst" + default: + return "unknown" + } +} + +func (o PullOrder) MarshalText() ([]byte, error) { + return []byte(o.String()), nil +} + +func (o *PullOrder) UnmarshalText(bs []byte) error { + switch string(bs) { + case "random": + *o = OrderRandom + case "alphabetic": + *o = OrderAlphabetic + case "smallestFirst": + *o = OrderSmallestFirst + case "largestFirst": + *o = OrderLargestFirst + case "oldestFirst": + *o = OrderOldestFirst + case "newestFirst": + *o = OrderNewestFirst + default: + *o = OrderRandom + } + return nil +} diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 2c6fe0877..7cd7f7bdb 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -528,3 +528,51 @@ func TestCopy(t *testing.T) { t.Error("Copy should be unchanged") } } + +func TestPullOrder(t *testing.T) { + wrapper, err := Load("testdata/pullorder.xml", device1) + if err != nil { + t.Fatal(err) + } + folders := wrapper.Folders() + + expected := []struct { + name string + order PullOrder + }{ + {"f1", OrderRandom}, // empty value, default + {"f2", OrderRandom}, // explicit + {"f3", OrderAlphabetic}, // explicit + {"f4", OrderRandom}, // unknown value, default + {"f5", OrderSmallestFirst}, // explicit + {"f6", OrderLargestFirst}, // explicit + {"f7", OrderOldestFirst}, // explicit + {"f8", OrderNewestFirst}, // explicit + } + + // Verify values are deserialized correctly + + for _, tc := range expected { + if actual := folders[tc.name].Order; actual != tc.order { + t.Errorf("Incorrect pull order for %q: %v != %v", tc.name, actual, tc.order) + } + } + + // Serialize and deserialize again to verify it survives the transformation + + buf := new(bytes.Buffer) + cfg := wrapper.Raw() + cfg.WriteXML(buf) + + t.Logf("%s", buf.Bytes()) + + cfg, err = ReadXML(buf, device1) + wrapper = Wrap("testdata/pullorder.xml", cfg) + folders = wrapper.Folders() + + for _, tc := range expected { + if actual := folders[tc.name].Order; actual != tc.order { + t.Errorf("Incorrect pull order for %q: %v != %v", tc.name, actual, tc.order) + } + } +} diff --git a/internal/config/testdata/pullorder.xml b/internal/config/testdata/pullorder.xml new file mode 100644 index 000000000..59e04f20c --- /dev/null +++ b/internal/config/testdata/pullorder.xml @@ -0,0 +1,25 @@ + + + + + random + + + alphabetic + + + whatever + + + smallestFirst + + + largestFirst + + + oldestFirst + + + newestFirst + + diff --git a/internal/model/queue.go b/internal/model/queue.go index 2d382a628..51565c8cb 100644 --- a/internal/model/queue.go +++ b/internal/model/queue.go @@ -6,23 +6,34 @@ package model -import "github.com/syncthing/syncthing/internal/sync" +import ( + "math/rand" + "sort" + + "github.com/syncthing/syncthing/internal/sync" +) type jobQueue struct { progress []string - queued []string + queued []jobQueueEntry mut sync.Mutex } +type jobQueueEntry struct { + name string + size int64 + modified int64 +} + func newJobQueue() *jobQueue { return &jobQueue{ mut: sync.NewMutex(), } } -func (q *jobQueue) Push(file string) { +func (q *jobQueue) Push(file string, size, modified int64) { q.mut.Lock() - q.queued = append(q.queued, file) + q.queued = append(q.queued, jobQueueEntry{file, size, modified}) q.mut.Unlock() } @@ -34,8 +45,7 @@ func (q *jobQueue) Pop() (string, bool) { return "", false } - var f string - f = q.queued[0] + f := q.queued[0].name q.queued = q.queued[1:] q.progress = append(q.progress, f) @@ -47,7 +57,7 @@ func (q *jobQueue) BringToFront(filename string) { defer q.mut.Unlock() for i, cur := range q.queued { - if cur == filename { + if cur.name == filename { if i > 0 { // Shift the elements before the selected element one step to // the right, overwriting the selected element @@ -81,7 +91,62 @@ func (q *jobQueue) Jobs() ([]string, []string) { copy(progress, q.progress) queued := make([]string, len(q.queued)) - copy(queued, q.queued) + for i := range q.queued { + queued[i] = q.queued[i].name + } return progress, queued } + +func (q *jobQueue) Shuffle() { + q.mut.Lock() + defer q.mut.Unlock() + + l := len(q.queued) + for i := range q.queued { + r := rand.Intn(l) + q.queued[i], q.queued[r] = q.queued[r], q.queued[i] + } +} + +func (q *jobQueue) SortSmallestFirst() { + q.mut.Lock() + defer q.mut.Unlock() + + sort.Sort(smallestFirst(q.queued)) +} + +func (q *jobQueue) SortLargestFirst() { + q.mut.Lock() + defer q.mut.Unlock() + + sort.Sort(sort.Reverse(smallestFirst(q.queued))) +} + +func (q *jobQueue) SortOldestFirst() { + q.mut.Lock() + defer q.mut.Unlock() + + sort.Sort(oldestFirst(q.queued)) +} + +func (q *jobQueue) SortNewestFirst() { + q.mut.Lock() + defer q.mut.Unlock() + + sort.Sort(sort.Reverse(oldestFirst(q.queued))) +} + +// The usual sort.Interface boilerplate + +type smallestFirst []jobQueueEntry + +func (q smallestFirst) Len() int { return len(q) } +func (q smallestFirst) Less(a, b int) bool { return q[a].size < q[b].size } +func (q smallestFirst) Swap(a, b int) { q[a], q[b] = q[b], q[a] } + +type oldestFirst []jobQueueEntry + +func (q oldestFirst) Len() int { return len(q) } +func (q oldestFirst) Less(a, b int) bool { return q[a].modified < q[b].modified } +func (q oldestFirst) Swap(a, b int) { q[a], q[b] = q[b], q[a] } diff --git a/internal/model/queue_test.go b/internal/model/queue_test.go index 221089267..c218b8a00 100644 --- a/internal/model/queue_test.go +++ b/internal/model/queue_test.go @@ -15,10 +15,10 @@ import ( func TestJobQueue(t *testing.T) { // Some random actions q := newJobQueue() - q.Push("f1") - q.Push("f2") - q.Push("f3") - q.Push("f4") + q.Push("f1", 0, 0) + q.Push("f2", 0, 0) + q.Push("f3", 0, 0) + q.Push("f4", 0, 0) progress, queued := q.Jobs() if len(progress) != 0 || len(queued) != 4 { @@ -43,7 +43,7 @@ func TestJobQueue(t *testing.T) { t.Fatal("Wrong length", len(progress), len(queued)) } - q.Push(n) + q.Push(n, 0, 0) progress, queued = q.Jobs() if len(progress) != 0 || len(queued) != 4 { t.Fatal("Wrong length") @@ -120,10 +120,10 @@ func TestJobQueue(t *testing.T) { func TestBringToFront(t *testing.T) { q := newJobQueue() - q.Push("f1") - q.Push("f2") - q.Push("f3") - q.Push("f4") + q.Push("f1", 0, 0) + q.Push("f2", 0, 0) + q.Push("f3", 0, 0) + q.Push("f4", 0, 0) _, queued := q.Jobs() if !reflect.DeepEqual(queued, []string{"f1", "f2", "f3", "f4"}) { @@ -159,12 +159,101 @@ func TestBringToFront(t *testing.T) { } } +func TestShuffle(t *testing.T) { + q := newJobQueue() + q.Push("f1", 0, 0) + q.Push("f2", 0, 0) + q.Push("f3", 0, 0) + q.Push("f4", 0, 0) + + // This test will fail once in eight million times (1 / (4!)^5) :) + for i := 0; i < 5; i++ { + q.Shuffle() + _, queued := q.Jobs() + if l := len(queued); l != 4 { + t.Fatalf("Weird length %d returned from Jobs()", l) + } + + t.Logf("%v", queued) + if !reflect.DeepEqual(queued, []string{"f1", "f2", "f3", "f4"}) { + // The queue was shuffled + return + } + } + + t.Error("Queue was not shuffled after five attempts.") +} + +func TestSortBySize(t *testing.T) { + q := newJobQueue() + q.Push("f1", 20, 0) + q.Push("f2", 40, 0) + q.Push("f3", 30, 0) + q.Push("f4", 10, 0) + + q.SortSmallestFirst() + + _, actual := q.Jobs() + if l := len(actual); l != 4 { + t.Fatalf("Weird length %d returned from Jobs()", l) + } + expected := []string{"f4", "f1", "f3", "f2"} + + if !reflect.DeepEqual(actual, expected) { + t.Errorf("SortSmallestFirst(): %#v != %#v", actual, expected) + } + + q.SortLargestFirst() + + _, actual = q.Jobs() + if l := len(actual); l != 4 { + t.Fatalf("Weird length %d returned from Jobs()", l) + } + expected = []string{"f2", "f3", "f1", "f4"} + + if !reflect.DeepEqual(actual, expected) { + t.Errorf("SortLargestFirst(): %#v != %#v", actual, expected) + } +} + +func TestSortByAge(t *testing.T) { + q := newJobQueue() + q.Push("f1", 0, 20) + q.Push("f2", 0, 40) + q.Push("f3", 0, 30) + q.Push("f4", 0, 10) + + q.SortOldestFirst() + + _, actual := q.Jobs() + if l := len(actual); l != 4 { + t.Fatalf("Weird length %d returned from Jobs()", l) + } + expected := []string{"f4", "f1", "f3", "f2"} + + if !reflect.DeepEqual(actual, expected) { + t.Errorf("SortOldestFirst(): %#v != %#v", actual, expected) + } + + q.SortNewestFirst() + + _, actual = q.Jobs() + if l := len(actual); l != 4 { + t.Fatalf("Weird length %d returned from Jobs()", l) + } + expected = []string{"f2", "f3", "f1", "f4"} + + if !reflect.DeepEqual(actual, expected) { + t.Errorf("SortNewestFirst(): %#v != %#v", actual, expected) + } +} + func BenchmarkJobQueueBump(b *testing.B) { files := genFiles(b.N) q := newJobQueue() for _, f := range files { - q.Push(f.Name) + q.Push(f.Name, 0, 0) } b.ResetTimer() @@ -180,7 +269,7 @@ func BenchmarkJobQueuePushPopDone10k(b *testing.B) { for i := 0; i < b.N; i++ { q := newJobQueue() for _, f := range files { - q.Push(f.Name) + q.Push(f.Name, 0, 0) } for _ = range files { n, _ := q.Pop() diff --git a/internal/model/rwfolder.go b/internal/model/rwfolder.go index dc1a4b125..4b37ef088 100644 --- a/internal/model/rwfolder.go +++ b/internal/model/rwfolder.go @@ -69,6 +69,7 @@ type rwFolder struct { copiers int pullers int shortID uint64 + order config.PullOrder stop chan struct{} queue *jobQueue @@ -93,6 +94,7 @@ func newRWFolder(m *Model, shortID uint64, cfg config.FolderConfiguration) *rwFo copiers: cfg.Copiers, pullers: cfg.Pullers, shortID: shortID, + order: cfg.Order, stop: make(chan struct{}), queue: newJobQueue(), @@ -346,13 +348,9 @@ func (p *rwFolder) pullerIteration(ignores *ignore.Matcher) int { buckets := map[string][]protocol.FileInfo{} folderFiles.WithNeed(protocol.LocalDeviceID, func(intf db.FileIntf) bool { - - // Needed items are delivered sorted lexicographically. This isn't - // really optimal from a performance point of view - it would be - // better if files were handled in random order, to spread the load - // over the cluster. But it means that we can be sure that we fully - // handle directories before the files that go inside them, which is - // nice. + // Needed items are delivered sorted lexicographically. We'll handle + // directories as they come along, so parents before children. Files + // are queued and the order may be changed later. file := intf.(protocol.FileInfo) @@ -392,13 +390,32 @@ func (p *rwFolder) pullerIteration(ignores *ignore.Matcher) int { default: // A new or changed file or symlink. This is the only case where we // do stuff concurrently in the background - p.queue.Push(file.Name) + p.queue.Push(file.Name, file.Size(), file.Modified) } changed++ return true }) + // Reorder the file queue according to configuration + + switch p.order { + case config.OrderRandom: + p.queue.Shuffle() + case config.OrderAlphabetic: + // The queue is already in alphabetic order. + case config.OrderSmallestFirst: + p.queue.SortSmallestFirst() + case config.OrderLargestFirst: + p.queue.SortLargestFirst() + case config.OrderOldestFirst: + p.queue.SortOldestFirst() + case config.OrderNewestFirst: + p.queue.SortOldestFirst() + } + + // Process the file queue + nextFile: for { fileName, ok := p.queue.Pop() diff --git a/internal/model/rwfolder_test.go b/internal/model/rwfolder_test.go index 61957395b..25a27149f 100644 --- a/internal/model/rwfolder_test.go +++ b/internal/model/rwfolder_test.go @@ -393,7 +393,7 @@ func TestDeregisterOnFailInCopy(t *testing.T) { } // queue.Done should be called by the finisher routine - p.queue.Push("filex") + p.queue.Push("filex", 0, 0) p.queue.Pop() if len(p.queue.progress) != 1 { @@ -480,7 +480,7 @@ func TestDeregisterOnFailInPull(t *testing.T) { } // queue.Done should be called by the finisher routine - p.queue.Push("filex") + p.queue.Push("filex", 0, 0) p.queue.Pop() if len(p.queue.progress) != 1 {