an [abandoned] attempt to slice out the docker/docker/pkg package
Find a file
Aaron Lehmann 572a785718 Fix race condition when waiting for a concurrent layer pull
Before, this only waited for the download to complete. There was no
guarantee that the layer had been registered in the graph and was ready
use. This is especially problematic with v2 pulls, which wait for all
downloads before extracting layers.

Change Broadcaster to allow an error value to be propagated from Close
to the waiters.

Make the wait stop when the extraction is finished, rather than just the
download.

This also fixes v2 layer downloads to prefix the pool key with "layer:"
instead of "img:". "img:" is the wrong prefix, because this is what v1
uses for entire images. A v1 pull waiting for one of these operations to
finish would only wait for that particular layer, not all its
dependencies.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
2015-09-11 10:52:34 -07:00
ansiescape Use notary library for trusted image fetch and signing 2015-07-24 14:08:20 -07:00
archive Update validate-lint to find go files by itself 2015-09-08 22:07:42 +02:00
broadcastwriter Use a slice instead of a map of io.WriteClosers in broadcastwriter 2015-08-21 14:08:04 +01:00
chrootarchive Fixing Tar functions to support Windows long paths. 2015-08-11 16:07:36 -07:00
devicemapper pkg: devicemapper: fix typo in function declaration 2015-09-09 15:57:52 +02:00
directory make docker compile on freebsd 2015-07-29 21:25:56 +03:00
fileutils Add missing tests and docs for pkg/fileutils 2015-07-12 22:43:42 +02:00
graphdb Merge pull request #16054 from jfrazelle/update-sqlite3-dep 2015-09-03 19:20:57 -07:00
homedir Update libcontainer 2015-07-16 16:02:26 -07:00
httputils Update httputils tests 2015-09-09 14:59:25 +02:00
integration Add unit tests for integration cli utils function 2015-09-09 15:36:44 +02:00
ioutils pkg/ioutils: lower bufReader reset timeout 2015-08-28 23:13:02 +03:00
jsonlog Enable golint in pkg/jsonlog and pkg/jsonmessage. 2015-08-08 11:28:22 +08:00
jsonmessage Avoid buffering to tempfile when pushing with V2 2015-08-24 18:08:05 -07:00
listenbuffer linting changes 2015-06-17 01:16:57 +03:00
mflag typofix - https://github.com/vlajos/misspell_fixer 2015-08-07 23:25:49 +01:00
mount pkg: mount: golint 2015-07-22 10:26:10 +02:00
namesgenerator Normalized, ungrouped, and sorted names 2015-09-01 21:57:01 -07:00
nat Adding support to publish on custom host port ranges 2015-08-15 02:41:29 +00:00
parsers Remove PortMapping from container NetworkSettings 2015-09-02 14:32:53 +02:00
pidfile Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
plugins Lint package pkg/plugins/pluginrpc-gen 2015-09-05 23:15:13 +02:00
pools Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
progressreader Fix race condition when waiting for a concurrent layer pull 2015-09-11 10:52:34 -07:00
promise Move Go() promise-like func from utils to pkg/promise 2014-09-29 23:16:27 -07:00
proxy Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
pubsub Don't use time.After if there is no timeout 2015-07-14 09:14:51 -07:00
random Prefer crypto rand seed for pkg/rand 2015-07-29 12:55:57 -04:00
reexec make docker compile on freebsd 2015-07-29 21:25:56 +03:00
signal Signal to stop a container. 2015-09-10 19:56:05 -04:00
sockets make docker compile on freebsd 2015-07-29 21:25:56 +03:00
stdcopy fix golint warnings/errors on pkg/system and pkg/stdcopy 2015-08-13 18:47:13 +08:00
streamformatter Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
stringid Add GenerateNonCryptoID function to avoid entropy exhaustion 2015-07-28 22:31:01 -07:00
stringutils pkg: stringutils: Add more tests to strslice 2015-09-01 20:27:45 +02:00
symlink Windows: Fix absolute checks 2015-09-01 08:41:37 -07:00
sysinfo Add support for kernel memory limit 2015-08-19 23:56:55 +08:00
system Windows: Fix use of IsAbs check 2015-08-26 12:38:28 -07:00
tailfile typofix - https://github.com/vlajos/misspell_fixer 2015-08-07 23:25:49 +01:00
tarsum tarsum: add a big fat warning 2015-08-25 16:50:08 -04:00
term Lint pkg/term/windows package 2015-09-03 22:25:52 +02:00
timeoutconn Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
timeutils Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
tlsconfig tlsconfig: better format for error message in tlsconfig 2015-07-30 14:15:41 -04:00
truncindex Remove read index that causes dead lock. 2015-07-31 13:53:17 -07:00
ulimit Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
units Multiple fixes to 'docker stats' output: 2015-07-30 10:14:57 +03:00
urlutil Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
useragent Lint on pkg/* packages 2015-07-27 21:26:21 +02:00
version Fix minor typo 2015-03-25 00:46:22 +08:00
README.md Add README to pkg 2013-12-23 23:12:19 +00:00

pkg/ is a collection of utility packages used by the Docker project without being specific to its internals.

Utility packages are kept separate from the docker core codebase to keep it as small and concise as possible. If some utilities grow larger and their APIs stabilize, they may be moved to their own repository under the Docker organization, to facilitate re-use by other projects. However that is not the priority.

The directory pkg is named after the same directory in the camlistore project. Since Brad is a core Go maintainer, we thought it made sense to copy his methods for organizing Go code :) Thanks Brad!

Because utility packages are small and neatly separated from the rest of the codebase, they are a good place to start for aspiring maintainers and contributors. Get in touch if you want to help maintain them!