Commit Graph

7 Commits

Author SHA1 Message Date
9cd9d4349d ioutils: fix race in access closeErr in bytespipe
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: b32478488ce6d373e44bb8a6c9cb986c773ad48e
Component: engine
2016-06-06 11:29:47 -07:00
fbe4a4ca43 Fix concurrent map access in bytespipe
When getting and returning a buffer, need to make sure to syncronize
access to the pools map.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 194c72611d5053f1e05dd020d02989dec872a06b
Component: engine
2016-05-12 10:04:05 -04:00
4b68403613 Fix closing attach streams on lost tcp connection
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: a47cd639158ee9cfd228c0ae8257301b8510f3ad
Component: engine
2016-04-06 21:27:47 -07:00
933477cfba Improve performance/reduce allocs of bytespipe
Creates a `fixedBuffer` type that is used to encapsulate functionality
for reading/writing from the underlying byte slices.

Uses lazily-loaded set of sync.Pools for storing buffers that are no
longer needed so they can be re-used.

```
benchmark                     old ns/op     new ns/op     delta
BenchmarkBytesPipeWrite-8     138469        48985         -64.62%
BenchmarkBytesPipeRead-8      130922        56601         -56.77%

benchmark                     old allocs     new allocs     delta
BenchmarkBytesPipeWrite-8     18             8              -55.56%
BenchmarkBytesPipeRead-8      0              0              +0.00%

benchmark                     old bytes     new bytes     delta
BenchmarkBytesPipeWrite-8     66903         1649          -97.54%
BenchmarkBytesPipeRead-8      0             1             +Inf%
```

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 9a25b1d942da88439ec04797ff6f1c33c3b5562d
Component: engine
2016-04-05 13:06:04 -04: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
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
1c8652eb77 Add BytesPipe datastructure to ioutils
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
Upstream-commit: 24310b5b4ab600ab5cb046d2f2ceaaa086b30be3
Component: engine
2015-09-23 16:00:27 -07:00