2
2
mirror of https://github.com/octoleo/restic.git synced 2024-11-26 23:06:32 +00:00
restic/internal
Michael Eischer bdf7ba20cb archiver: Fix race condition triggered by TestArchiverAbortEarlyOnError
The Save methods of the BlobSaver, FileSaver and TreeSaver return early
on when the archiver is stopped due to an error. For that they select on
both the tomb.Dying() and context.Done() channels, which can lead to a
race condition when the tomb is killed due to an error: The tomb first
closes its Dying channel before canceling all child contexts.
Archiver.SaveDir only aborts its execution once the context was
canceled. When the tomb killing is paused between closing its Dying
channel and canceling the child contexts, this lets the
FileSaver/TreeSaver.Save methods return immediately, however, ScanDir
still reads further files causing the test case to fail.

As a killed tomb always cancels all child contexts and as the Savers
always use a context bound to the tomb, it is sufficient to just use
context.Done() as escape hatch in the Save functions. This fixes the
mismatch between SaveDir and Save.

Adjust the tests to use contexts bound to the tomb for all interactions
with the Savers.
2020-04-13 18:23:17 +02:00
..
archiver archiver: Fix race condition triggered by TestArchiverAbortEarlyOnError 2020-04-13 18:23:17 +02:00
backend Revert "Put host last in SSH command line" 2020-03-08 16:45:33 +01:00
cache Honor RESTIC_CACHE_DIR on Mac and Windows 2020-02-28 15:44:32 +01:00
checker remove unnecessary error return 2020-01-27 18:28:21 +03:00
crypto crypto: Rework Seal/Open to use sliceForAppend 2017-11-01 10:30:40 +01:00
debug Remove build tag release 2018-10-11 19:40:38 +02:00
errors backup: Improve error message for invalid pattern 2018-10-03 11:12:51 +02:00
filter filter: Allow double wildcard in ChildMatch 2018-06-09 23:18:13 +02:00
fs Merge pull request #2583 from greatroar/unused 2020-03-01 10:46:17 +01:00
fuse Support specifying multiple host flags for various commands 2020-02-26 22:17:59 +01:00
hashing Moves files 2017-07-23 14:19:13 +02:00
index index.New: Test various error conditions 2018-10-28 14:02:31 +01:00
limiter rclone: Respect bandwith limits 2018-05-22 20:48:17 +02:00
migrations clean up some errors from 'go vet ./...' 2018-09-05 08:04:55 -04:00
mock mock: Remove unused repository type 2019-04-13 13:38:39 +02:00
options improved slice copying 2019-06-30 23:56:36 +03:00
pack backend: Improve Save() 2018-03-03 15:49:44 +01:00
repository Merge pull request #2637 from greatroar/unused 2020-03-18 22:22:15 +01:00
restic Merge pull request #2623 from alrs/internal-restic-err-before-close 2020-03-18 22:23:20 +01:00
restorer Fix sync.WaitGroup usage in restorer.fileRestorer 2020-02-27 00:07:49 +01:00
selfupdate self-update: Don't cancel download after 30 seconds 2019-02-23 11:15:18 +01:00
test Remove remnant of Go 1.9 compatibility code from tests 2020-02-26 22:23:38 +01:00
textfile Add textfile 2018-05-01 14:38:59 +02:00
ui Remove unnecessary pipe checks in termstatus 2020-02-29 18:03:49 +01:00
walker walk: Pass parent tree ID to WalkFunc 2018-08-19 23:28:04 +02:00