2
2
mirror of https://github.com/octoleo/restic.git synced 2024-12-23 03:18:55 +00:00
restic/internal
George Armhold 3304b0fcf0 prevent deadlock in List() for B2 when b2.connections=1
This is a fix for the following situation (gh-1188):

List() grabs a semaphore token upon entry, starts a goroutine, and
does not release the token until the routine exits (via a defer).

The goroutine iterates over the results from ListCurrentObjects(),
sending them one at a time to a channel, where they are ultimately
processed by be.Load().

Since be.Load() also needs a token, this will result in deadlock if
b2.connections=1.

This fix changes List() so that the token is only held during the call
to ListCurrentObjects().
2017-10-28 18:46:47 -04:00
..
archiver Remove all dot-imports 2017-10-02 15:06:39 +02:00
backend prevent deadlock in List() for B2 when b2.connections=1 2017-10-28 18:46:47 -04:00
cache small cleanup: 2017-10-25 12:03:55 -04:00
checker small cleanup: 2017-10-25 12:03:55 -04:00
crypto Improve crypto test 2017-10-28 12:09:33 +02:00
debug Run goimports 2017-07-23 14:21:03 +02:00
errors Moves files 2017-07-23 14:19:13 +02:00
filter filter: document recursive wildcards 2017-09-04 14:38:48 -07:00
fs local: Fix creating data dirs 2017-09-11 21:48:25 +02:00
fuse fuse: bugfix: ignore empty tags 2017-10-16 16:22:08 +02:00
hashing Moves files 2017-07-23 14:19:13 +02:00
index Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
limiter Basic rate limiting implementation. 2017-10-11 20:01:20 -07:00
list Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
migrations Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
mock Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
options Run goimports 2017-07-23 14:21:03 +02:00
pack Remove all dot-imports 2017-10-02 15:06:39 +02:00
pipe small cleanup: 2017-10-25 12:03:55 -04:00
repository Rename KDFParams -> Params 2017-10-28 10:28:29 +02:00
restic Merge pull request #1390 from armhold/lint 2017-10-28 09:54:35 +02:00
test internal: check error before deferring file Close() 2017-08-13 19:28:13 +02:00
walk Remove all dot-imports 2017-10-02 15:06:39 +02:00
worker Run goimports 2017-07-23 14:21:03 +02:00