mirror of
https://github.com/restic/restic.git
synced 2024-12-23 08:16:36 +00:00
backup: Use buffered channels to collect backup status
When backing up many small files, the unbuffered channels frequently cause the FileSaver to block when reporting progress information. Thus, add buffers to these channels to avoid unnecessary scheduling. As the status information is purely informational, it doesn't matter that the status reporting shutdown is somewhat racy and could miss a few final updates.
This commit is contained in:
parent
119e6aee01
commit
d3ebec8f21
1 changed files with 6 additions and 3 deletions
|
@ -87,10 +87,13 @@ func NewProgress(printer ProgressPrinter) *Progress {
|
|||
MinUpdatePause: time.Second / 60,
|
||||
start: time.Now(),
|
||||
|
||||
totalCh: make(chan Counter),
|
||||
processedCh: make(chan Counter),
|
||||
// use buffered channels for the information used to update the status
|
||||
// the shutdown of the `Run()` method is somewhat racy, but won't affect
|
||||
// the final backup statistics
|
||||
totalCh: make(chan Counter, 100),
|
||||
processedCh: make(chan Counter, 100),
|
||||
errCh: make(chan struct{}),
|
||||
workerCh: make(chan fileWorkerMessage),
|
||||
workerCh: make(chan fileWorkerMessage, 100),
|
||||
closed: make(chan struct{}),
|
||||
|
||||
summary: &Summary{},
|
||||
|
|
Loading…
Reference in a new issue