Commit Graph

17 Commits

Author SHA1 Message Date
547342d777 Improved push and pull with upload manager and download manager
This commit adds a transfer manager which deduplicates and schedules
transfers, and also an upload manager and download manager that build on
top of the transfer manager to provide high-level interfaces for uploads
and downloads. The push and pull code is modified to use these building
blocks.

Some benefits of the changes:

- Simplification of push/pull code
- Pushes can upload layers concurrently
- Failed downloads and uploads are retried after backoff delays
- Cancellation is supported, but individual transfers will only be
  cancelled if all pushes or pulls using them are cancelled.
- The distribution code is decoupled from Docker Engine packages and API
  conventions (i.e. streamformatter), which will make it easier to split
  out.

This commit also includes unit tests for the new distribution/xfer
package. The tests cover 87.8% of the statements in the package.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 572ce802306a4e919802e5b77cbeca94acda7c0a
Component: engine
2015-12-09 19:13:35 -08:00
971f161db1 Cap the amount of buffering done by BytesPipe
Turn BytesPipe's Read and Write functions into blocking, goroutine-safe
functions. Add a CloseWithError function to propagate an error code to
the Read function.

Adjust tests to work with the blocking Read and Write functions.

Remove BufReader, since now its users can use BytesPipe directly.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
Upstream-commit: 64f8ee444d23ae29a236f169f1d7faf7042b524a
Component: engine
2015-11-12 10:11:29 -08:00
df6cc87bb6 goroutine fairness is not guaranteed causing the hang with GCCGO
Signed-off-by: Srini Brahmaroutu <srbrahma@us.ibm.com>
Upstream-commit: 7c52fcce855e446752b6ad642dd4d6c0d732b8f3
Component: engine
2015-09-25 14:40:16 +00:00
be78ccc6cf Make bytesPipe use linear allocations
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: c5b23337c37f0bcf01a7bf6a5129c326df136396
Component: engine
2015-09-23 17:12:54 -07:00
f73d781736 Refactor bufReader to use BytesPipe
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 56b70bf84e253bfedef94248a0b6b1f8d730091c
Component: engine
2015-09-23 16:00:28 -07:00
7981f6d0c0 pkg/ioutils: lower bufReader reset timeout
Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com>
Upstream-commit: f9df813a992505ba2b37fad843ab943347d3ef11
Component: engine
2015-08-28 23:13:02 +03:00
2c6e673ce7 typofix - https://github.com/vlajos/misspell_fixer
Signed-off-by: Veres Lajos <vlajos@gmail.com>
Upstream-commit: 514623272398574c8fd7ef3fe42c5b2ae161349a
Component: engine
2015-08-07 23:25:49 +01:00
e840b8ec78 Enable golint part of #14756
pkg/broadcastwriter
pkg/graphdb
pkg/httputils
pkg/ioutils

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Upstream-commit: 27a8f9937ece67015d06b219bb8aa5cc4f6b7d32
Component: engine
2015-08-03 09:45:05 +08:00
116e469838 Fix reset timeout for buffer readers.
Use our goroutine-safe random source.

Signed-off-by: David Calavera <david.calavera@gmail.com>
Upstream-commit: 40ea67a5962d5e47f883421a637c93b888206677
Component: engine
2015-07-28 14:30:18 -07:00
4b2f3f5f76 Merge pull request #14605 from brahmaroutu/gccgo_scheduler
Go Scheduler issue with sync.Mutex
Upstream-commit: 7b83b0e15c4507871ed411aca5610aa7da751bd9
Component: engine
2015-07-17 08:16:32 -07:00
d905b9673f Go Scheduler issue with sync.Mutex using gccgo
Signed-off-by: Srini Brahmaroutu <srbrahma@us.ibm.com>
Upstream-commit: 9ca913d0f168d943f6e15f32f52f777732b354a7
Component: engine
2015-07-17 01:33:58 +00:00
0a78587632 remove pkg/transport and use the one from distribution
Signed-off-by: Tibor Vass <tibor@docker.com>
Upstream-commit: 276c640be4b4335e3b8d684cb3562a56d3337b39
Component: engine
2015-07-16 13:13:46 -04:00
a4111cba55 Refactor utils/utils, fixes #11923
Signed-off-by: Antonio Murdaca <me@runcom.ninja>
Upstream-commit: c30a55f14dbbe3971ba0ac716ba69a60868f4490
Component: engine
2015-04-14 01:37:36 +02:00
c6028dad54 pkg/ioutils: avoid huge Buffer growth in bufreader
Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com>
Upstream-commit: e5ea2b235720db8dec7689b410de1830f707284a
Component: engine
2015-03-18 19:51:55 +02:00
dd97f278a0 pkg/ioutils: add ReaderErrWrapper to readers
Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
Upstream-commit: bd130e72a06dc3e8de521ce365bf4933f36b2417
Component: engine
2014-09-03 11:36:21 +03:00
dca3941db1 pkg/ioutils: add NewBufReaderWithDrainbufAndBuffer
Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
Upstream-commit: c93b9e81c03168ca69def94ba231d2ecc6672ce9
Component: engine
2014-09-03 11:36:21 +03:00
e9ab736d16 move some io related utils to pkg/ioutils
Docker-DCO-1.1-Signed-off-by: Cristian Staretu <cristian.staretu@gmail.com> (github: unclejack)
Upstream-commit: 76212635b594d4472dd8d5b2e071fac416addbe7
Component: engine
2014-09-03 11:36:21 +03:00