From e33fa101155e85dec10a4717b9eb14be466a2f87 Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Thu, 31 Aug 2017 10:47:39 +0200 Subject: [PATCH] lib/model: Use same batch size constants in db updater as for protocol --- lib/model/rwfolder.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/model/rwfolder.go b/lib/model/rwfolder.go index 64a2d65c..4dfeab20 100644 --- a/lib/model/rwfolder.go +++ b/lib/model/rwfolder.go @@ -1479,13 +1479,10 @@ func (f *sendReceiveFolder) Jobs() ([]string, []string) { // dbUpdaterRoutine aggregates db updates and commits them in batches no // larger than 1000 items, and no more delayed than 2 seconds. func (f *sendReceiveFolder) dbUpdaterRoutine() { - const ( - maxBatchSize = 1000 - maxBatchTime = 2 * time.Second - ) + const maxBatchTime = 2 * time.Second - batch := make([]dbUpdateJob, 0, maxBatchSize) - files := make([]protocol.FileInfo, 0, maxBatchSize) + batch := make([]dbUpdateJob, 0, maxBatchSizeFiles) + files := make([]protocol.FileInfo, 0, maxBatchSizeFiles) tick := time.NewTicker(maxBatchTime) defer tick.Stop() @@ -1545,6 +1542,7 @@ func (f *sendReceiveFolder) dbUpdaterRoutine() { files = files[:0] } + batchSizeBytes := 0 loop: for { select { @@ -1556,8 +1554,10 @@ loop: job.file.Sequence = 0 batch = append(batch, job) - if len(batch) == maxBatchSize { + batchSizeBytes += job.file.ProtoSize() + if len(batch) == maxBatchSizeFiles || batchSizeBytes > maxBatchSizeBytes { handleBatch() + batchSizeBytes = 0 } case <-tick.C: