From 50a34449959288b6824ef7fc8771e25e0009ce39 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 19 Dec 2017 11:44:29 +0100 Subject: [PATCH 1/9] Re-validate Mounts on container start Validation of Mounts was only performed on container _creation_, not on container _start_. As a result, if the host-path no longer existed when the container was started, a directory was created in the given location. This is the wrong behavior, because when using the `Mounts` API, host paths should never be created, and an error should be produced instead. This patch adds a validation step on container start, and produces an error if the host path is not found. Signed-off-by: Sebastiaan van Stijn Upstream-commit: 7cb96ba308dc53824d2203fd343a4a297d17976e Component: engine --- components/engine/daemon/container.go | 9 +++++++++ components/engine/volume/lcow_parser.go | 2 +- components/engine/volume/linux_parser.go | 2 +- components/engine/volume/parser.go | 3 +-- components/engine/volume/validate_test.go | 12 ++++-------- components/engine/volume/windows_parser.go | 2 +- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/components/engine/daemon/container.go b/components/engine/daemon/container.go index 26faedfdf9..b2f4f1053f 100644 --- a/components/engine/daemon/container.go +++ b/components/engine/daemon/container.go @@ -19,6 +19,7 @@ import ( "github.com/docker/docker/pkg/system" "github.com/docker/docker/pkg/truncindex" "github.com/docker/docker/runconfig" + "github.com/docker/docker/volume" "github.com/docker/go-connections/nat" "github.com/opencontainers/selinux/go-selinux/label" "github.com/pkg/errors" @@ -293,6 +294,14 @@ func (daemon *Daemon) verifyContainerSettings(platform string, hostConfig *conta return nil, errors.Errorf("can't create 'AutoRemove' container with restart policy") } + // Validate mounts; check if host directories still exist + parser := volume.NewParser(platform) + for _, cfg := range hostConfig.Mounts { + if err := parser.ValidateMountConfig(&cfg); err != nil { + return nil, err + } + } + for _, extraHost := range hostConfig.ExtraHosts { if _, err := opts.ValidateExtraHost(extraHost); err != nil { return nil, err diff --git a/components/engine/volume/lcow_parser.go b/components/engine/volume/lcow_parser.go index aeb81a4202..8d15f0d9d7 100644 --- a/components/engine/volume/lcow_parser.go +++ b/components/engine/volume/lcow_parser.go @@ -22,7 +22,7 @@ type lcowParser struct { windowsParser } -func (p *lcowParser) validateMountConfig(mnt *mount.Mount) error { +func (p *lcowParser) ValidateMountConfig(mnt *mount.Mount) error { return p.validateMountConfigReg(mnt, rxLCOWDestination, lcowSpecificValidators) } diff --git a/components/engine/volume/linux_parser.go b/components/engine/volume/linux_parser.go index 59605fe677..fd54e82162 100644 --- a/components/engine/volume/linux_parser.go +++ b/components/engine/volume/linux_parser.go @@ -40,7 +40,7 @@ func linuxValidateAbsolute(p string) error { } return fmt.Errorf("invalid mount path: '%s' mount path must be absolute", p) } -func (p *linuxParser) validateMountConfig(mnt *mount.Mount) error { +func (p *linuxParser) ValidateMountConfig(mnt *mount.Mount) error { // there was something looking like a bug in existing codebase: // - validateMountConfig on linux was called with options skipping bind source existence when calling ParseMountRaw // - but not when calling ParseMountSpec directly... nor when the unit test called it directly diff --git a/components/engine/volume/parser.go b/components/engine/volume/parser.go index 1f48b60e27..13fd7d1489 100644 --- a/components/engine/volume/parser.go +++ b/components/engine/volume/parser.go @@ -26,8 +26,7 @@ type Parser interface { IsBackwardCompatible(m *MountPoint) bool HasResource(m *MountPoint, absPath string) bool ValidateTmpfsMountDestination(dest string) error - - validateMountConfig(mt *mount.Mount) error + ValidateMountConfig(mt *mount.Mount) error } // NewParser creates a parser for a given container OS, depending on the current host OS (linux on a windows host will resolve to an lcowParser) diff --git a/components/engine/volume/validate_test.go b/components/engine/volume/validate_test.go index 6a8e28682b..eac343f50a 100644 --- a/components/engine/volume/validate_test.go +++ b/components/engine/volume/validate_test.go @@ -31,13 +31,9 @@ func TestValidateMount(t *testing.T) { {mount.Mount{Type: mount.TypeBind, Source: testDir, Target: testDestinationPath}, nil}, {mount.Mount{Type: "invalid", Target: testDestinationPath}, errors.New("mount type unknown")}, + {mount.Mount{Type: mount.TypeBind, Source: testSourcePath, Target: testDestinationPath}, errBindNotExist}, } - if runtime.GOOS == "windows" { - cases = append(cases, struct { - input mount.Mount - expected error - }{mount.Mount{Type: mount.TypeBind, Source: testSourcePath, Target: testDestinationPath}, errBindNotExist}) // bind source existance is not checked on linux - } + lcowCases := []struct { input mount.Mount expected error @@ -54,7 +50,7 @@ func TestValidateMount(t *testing.T) { } parser := NewParser(runtime.GOOS) for i, x := range cases { - err := parser.validateMountConfig(&x.input) + err := parser.ValidateMountConfig(&x.input) if err == nil && x.expected == nil { continue } @@ -65,7 +61,7 @@ func TestValidateMount(t *testing.T) { if runtime.GOOS == "windows" { parser = &lcowParser{} for i, x := range lcowCases { - err := parser.validateMountConfig(&x.input) + err := parser.ValidateMountConfig(&x.input) if err == nil && x.expected == nil { continue } diff --git a/components/engine/volume/windows_parser.go b/components/engine/volume/windows_parser.go index 172610dbdd..5cf1a8da74 100644 --- a/components/engine/volume/windows_parser.go +++ b/components/engine/volume/windows_parser.go @@ -189,7 +189,7 @@ func (p *windowsParser) ValidateVolumeName(name string) error { } return nil } -func (p *windowsParser) validateMountConfig(mnt *mount.Mount) error { +func (p *windowsParser) ValidateMountConfig(mnt *mount.Mount) error { return p.validateMountConfigReg(mnt, rxDestination, windowsSpecificValidators) } From e25f9d09538840797c5fd6d8f45232c5c4143117 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 19 Dec 2017 17:25:16 -0800 Subject: [PATCH 2/9] integration-cli/TestRunModeIpcContainer: remove 1. The functionality of this test is superceded by `TestAPIIpcModeShareableAndContainer` (see integration-cli/docker_api_ipcmode_test.go). 2. This test won't work with --default-ipc-mode private. Signed-off-by: Kir Kolyshkin Upstream-commit: 519c06607ca7e8a544afddbd61ad57afe63a98b4 Component: engine --- .../integration-cli/docker_cli_run_test.go | 42 ------------------- 1 file changed, 42 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_run_test.go b/components/engine/integration-cli/docker_cli_run_test.go index e6c1d91fce..1749df07c1 100644 --- a/components/engine/integration-cli/docker_cli_run_test.go +++ b/components/engine/integration-cli/docker_cli_run_test.go @@ -2312,48 +2312,6 @@ func (s *DockerSuite) TestRunModeIpcHost(c *check.C) { } } -func (s *DockerSuite) TestRunModeIpcContainer(c *check.C) { - // Not applicable on Windows as uses Unix-specific capabilities - testRequires(c, SameHostDaemon, DaemonIsLinux) - - out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", "echo -n test > /dev/shm/test && touch /dev/mqueue/toto && top") - - id := strings.TrimSpace(out) - state := inspectField(c, id, "State.Running") - if state != "true" { - c.Fatal("Container state is 'not running'") - } - pid1 := inspectField(c, id, "State.Pid") - - parentContainerIpc, err := os.Readlink(fmt.Sprintf("/proc/%s/ns/ipc", pid1)) - if err != nil { - c.Fatal(err) - } - - out, _ = dockerCmd(c, "run", fmt.Sprintf("--ipc=container:%s", id), "busybox", "readlink", "/proc/self/ns/ipc") - out = strings.Trim(out, "\n") - if parentContainerIpc != out { - c.Fatalf("IPC different with --ipc=container:%s %s != %s\n", id, parentContainerIpc, out) - } - - catOutput, _ := dockerCmd(c, "run", fmt.Sprintf("--ipc=container:%s", id), "busybox", "cat", "/dev/shm/test") - if catOutput != "test" { - c.Fatalf("Output of /dev/shm/test expected test but found: %s", catOutput) - } - - // check that /dev/mqueue is actually of mqueue type - grepOutput, _ := dockerCmd(c, "run", fmt.Sprintf("--ipc=container:%s", id), "busybox", "grep", "/dev/mqueue", "/proc/mounts") - if !strings.HasPrefix(grepOutput, "mqueue /dev/mqueue mqueue rw") { - c.Fatalf("Output of 'grep /proc/mounts' expected 'mqueue /dev/mqueue mqueue rw' but found: %s", grepOutput) - } - - lsOutput, _ := dockerCmd(c, "run", fmt.Sprintf("--ipc=container:%s", id), "busybox", "ls", "/dev/mqueue") - lsOutput = strings.Trim(lsOutput, "\n") - if lsOutput != "toto" { - c.Fatalf("Output of 'ls /dev/mqueue' expected 'toto' but found: %s", lsOutput) - } -} - func (s *DockerSuite) TestRunModeIpcContainerNotExists(c *check.C) { // Not applicable on Windows as uses Unix-specific capabilities testRequires(c, DaemonIsLinux) From dd0cbe7272fa58320ae0ba12ec5ad4bb1def8f2e Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 19 Dec 2017 17:28:13 -0800 Subject: [PATCH 3/9] integration-cli/TestCleanupMounts: fix/improve `TestCleanupMountsAfterDaemonAndContainerKill` was supposedly written when the container mounts were visible from the host. Currently they all live in their own mount namespace and the only visible mount is the tmpfs one for shareable /dev/shm inside the container (i.e. /var/lib/docker/containers//shm), which will no longer be there in case of `--default-ipc-mode private` is used, and so the test will fail. Add a check if any container mounts are visible from the host, and skip the test if there are none, as there's nothing to check. `TestCleanupMountsAfterDaemonCrash`: fix in a similar way, keeping all the other checks it does, and skipping the "mounts gone" check if there were no mounts visible from the host. While at it, also fix the tests to use `d.Kill()` in order to not leave behind a stale `docker.pid` files. Signed-off-by: Kir Kolyshkin Upstream-commit: f5e01452d2c2a07bab48b4e05306ef9446770c4a Component: engine --- .../integration-cli/docker_cli_daemon_test.go | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_daemon_test.go b/components/engine/integration-cli/docker_cli_daemon_test.go index fb616261d4..5fbfac9a40 100644 --- a/components/engine/integration-cli/docker_cli_daemon_test.go +++ b/components/engine/integration-cli/docker_cli_daemon_test.go @@ -1441,13 +1441,19 @@ func (s *DockerDaemonSuite) TestCleanupMountsAfterDaemonAndContainerKill(c *chec out, err := d.Cmd("run", "-d", "busybox", "top") c.Assert(err, check.IsNil, check.Commentf("Output: %s", out)) id := strings.TrimSpace(out) - c.Assert(d.Signal(os.Kill), check.IsNil) + + // If there are no mounts with container id visible from the host + // (as those are in container's own mount ns), there is nothing + // to check here and the test should be skipped. mountOut, err := ioutil.ReadFile("/proc/self/mountinfo") c.Assert(err, check.IsNil, check.Commentf("Output: %s", mountOut)) + if !strings.Contains(string(mountOut), id) { + d.Stop(c) + c.Skip("no container mounts visible in host ns") + } - // container mounts should exist even after daemon has crashed. - comment := check.Commentf("%s should stay mounted from older daemon start:\nDaemon root repository %s\n%s", id, d.Root, mountOut) - c.Assert(strings.Contains(string(mountOut), id), check.Equals, true, comment) + // kill the daemon + c.Assert(d.Kill(), check.IsNil) // kill the container icmd.RunCommand(ctrBinary, "--address", "/var/run/docker/containerd/docker-containerd.sock", @@ -1459,7 +1465,7 @@ func (s *DockerDaemonSuite) TestCleanupMountsAfterDaemonAndContainerKill(c *chec // Now, container mounts should be gone. mountOut, err = ioutil.ReadFile("/proc/self/mountinfo") c.Assert(err, check.IsNil, check.Commentf("Output: %s", mountOut)) - comment = check.Commentf("%s is still mounted from older daemon start:\nDaemon root repository %s\n%s", id, d.Root, mountOut) + comment := check.Commentf("%s is still mounted from older daemon start:\nDaemon root repository %s\n%s", id, d.Root, mountOut) c.Assert(strings.Contains(string(mountOut), id), check.Equals, false, comment) d.Stop(c) @@ -2047,13 +2053,18 @@ func (s *DockerDaemonSuite) TestCleanupMountsAfterDaemonCrash(c *check.C) { c.Assert(err, check.IsNil, check.Commentf("Output: %s", out)) id := strings.TrimSpace(out) - c.Assert(s.d.Signal(os.Kill), check.IsNil) + // kill the daemon + c.Assert(s.d.Kill(), check.IsNil) + + // Check if there are mounts with container id visible from the host. + // If not, those mounts exist in container's own mount ns, and so + // the following check for mounts being cleared is pointless. + skipMountCheck := false mountOut, err := ioutil.ReadFile("/proc/self/mountinfo") c.Assert(err, check.IsNil, check.Commentf("Output: %s", mountOut)) - - // container mounts should exist even after daemon has crashed. - comment := check.Commentf("%s should stay mounted from older daemon start:\nDaemon root repository %s\n%s", id, s.d.Root, mountOut) - c.Assert(strings.Contains(string(mountOut), id), check.Equals, true, comment) + if !strings.Contains(string(mountOut), id) { + skipMountCheck = true + } // restart daemon. s.d.Start(c, "--live-restore") @@ -2070,10 +2081,13 @@ func (s *DockerDaemonSuite) TestCleanupMountsAfterDaemonCrash(c *check.C) { out, err = s.d.Cmd("stop", id) c.Assert(err, check.IsNil, check.Commentf("Output: %s", out)) + if skipMountCheck { + return + } // Now, container mounts should be gone. mountOut, err = ioutil.ReadFile("/proc/self/mountinfo") c.Assert(err, check.IsNil, check.Commentf("Output: %s", mountOut)) - comment = check.Commentf("%s is still mounted from older daemon start:\nDaemon root repository %s\n%s", id, s.d.Root, mountOut) + comment := check.Commentf("%s is still mounted from older daemon start:\nDaemon root repository %s\n%s", id, s.d.Root, mountOut) c.Assert(strings.Contains(string(mountOut), id), check.Equals, false, comment) } From 2a3410270828d2c8b442462c51a4537c18bead2c Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 5 Dec 2017 11:25:37 -0800 Subject: [PATCH 4/9] TestBuildNotVerboseFailureRemote: fix false positive I got the following test failure on power: 10:00:56 10:00:56 ---------------------------------------------------------------------- 10:00:56 FAIL: docker_cli_build_test.go:3521: DockerSuite.TestBuildNotVerboseFailureRemote 10:00:56 10:00:56 docker_cli_build_test.go:3536: 10:00:56 c.Fatal(fmt.Errorf("Test[%s] expected that quiet stderr and verbose stdout are equal; quiet [%v], verbose [%v]", name, quietResult.Stderr(), result.Combined())) 10:00:56 ... Error: Test[quiet_build_wrong_remote] expected that quiet stderr and verbose stdout are equal; quiet [ 10:00:56 unable to prepare context: unable to download remote context http://something.invalid: Get http://something.invalid: dial tcp: lookup something.invalid on 172.29.128.11:53: no such host 10:00:56 ], verbose [unable to prepare context: unable to download remote context http://something.invalid: Get http://something.invalid: dial tcp: lookup something.invalid on 8.8.8.8:53: no such host 10:00:56 ] 10:00:56 10:00:56 10:00:56 ---------------------------------------------------------------------- The reason is, either more than one name server is configured, or nameserver was reconfigured in the middle of the test run. In any case, different nameserver IP in an error messages should not be treated as a failure, so let's strip those out. Signed-off-by: Kir Kolyshkin Upstream-commit: 3676bd8569f4df28a4f850cd4814e3558d8c03f6 Component: engine --- .../engine/integration-cli/docker_cli_build_test.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/components/engine/integration-cli/docker_cli_build_test.go b/components/engine/integration-cli/docker_cli_build_test.go index e60f4d5a6e..8ae5e05ed8 100644 --- a/components/engine/integration-cli/docker_cli_build_test.go +++ b/components/engine/integration-cli/docker_cli_build_test.go @@ -3532,7 +3532,17 @@ func (s *DockerSuite) TestBuildNotVerboseFailureRemote(c *check.C) { result.Assert(c, icmd.Expected{ ExitCode: 1, }) - if strings.TrimSpace(quietResult.Stderr()) != strings.TrimSpace(result.Combined()) { + + // An error message should contain name server IP and port, like this: + // "dial tcp: lookup something.invalid on 172.29.128.11:53: no such host" + // The IP:port need to be removed in order to not trigger a test failur + // when more than one nameserver is configured. + // While at it, also strip excessive newlines. + normalize := func(msg string) string { + return strings.TrimSpace(regexp.MustCompile("[1-9][0-9.]+:[0-9]+").ReplaceAllLiteralString(msg, "")) + } + + if normalize(quietResult.Stderr()) != normalize(result.Combined()) { c.Fatal(fmt.Errorf("Test[%s] expected that quiet stderr and verbose stdout are equal; quiet [%v], verbose [%v]", name, quietResult.Stderr(), result.Combined())) } } From 8befd2d809534453fdb5018c2933f6f7153c269f Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Wed, 6 Dec 2017 11:19:39 -0800 Subject: [PATCH 5/9] TestImportExtremelyLargeImageWorks: optimize DevZero According to https://github.com/golang/go/issues/5373, go recognizes (and optimizes for) the following syntax: ```go for i := range b { b[i] = 0 } ``` so let's use it. Limited testing shows ~7.5x speed increase, compared to the previously used syntax. Signed-off-by: Kir Kolyshkin Upstream-commit: f0cab0e28512de5eecc0412212425cc74d62af71 Component: engine --- components/engine/internal/testutil/helpers.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/engine/internal/testutil/helpers.go b/components/engine/internal/testutil/helpers.go index 287b3cb48a..bb36322a80 100644 --- a/components/engine/internal/testutil/helpers.go +++ b/components/engine/internal/testutil/helpers.go @@ -20,8 +20,8 @@ var DevZero io.Reader = devZero{} type devZero struct{} func (d devZero) Read(p []byte) (n int, err error) { - for i := 0; i < len(p); i++ { - p[i] = '\x00' + for i := range p { + p[i] = 0 } return len(p), nil } From 31e8b1c07778f62e828bdebcf3172edaba34289a Mon Sep 17 00:00:00 2001 From: Brett Randall Date: Thu, 28 Dec 2017 20:18:06 -0500 Subject: [PATCH 6/9] Fixed in-container paths in dev doc: moby/moby -> docker/docker. Further to 355cf9483c1b8ede5ae3ed50add4de2a69d62645 which caught some of these. This should fix the remainder in the contributing docs. Signed-off-by: Brett Randall Upstream-commit: e96b33665e58f73a16923b89a9bcc6fe6fcdb6c6 Component: engine --- components/engine/docs/contributing/set-up-dev-env.md | 2 +- .../engine/docs/contributing/software-req-win.md | 2 +- components/engine/docs/contributing/test.md | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/engine/docs/contributing/set-up-dev-env.md b/components/engine/docs/contributing/set-up-dev-env.md index b4cacf529e..7f8a38119f 100644 --- a/components/engine/docs/contributing/set-up-dev-env.md +++ b/components/engine/docs/contributing/set-up-dev-env.md @@ -130,7 +130,7 @@ can take over 15 minutes to complete. ```none Successfully built 3d872560918e Successfully tagged docker-dev:dry-run-test - docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "home/ubuntu/repos/docker/bundles:/go/src/github.com/moby/moby/bundles" -t "docker-dev:dry-run-test" bash + docker run --rm -i --privileged -e BUILDFLAGS -e KEEPBUNDLE -e DOCKER_BUILD_GOGC -e DOCKER_BUILD_PKGS -e DOCKER_CLIENTONLY -e DOCKER_DEBUG -e DOCKER_EXPERIMENTAL -e DOCKER_GITCOMMIT -e DOCKER_GRAPHDRIVER=devicemapper -e DOCKER_INCREMENTAL_BINARY -e DOCKER_REMAP_ROOT -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS -e TESTFLAGS -e TIMEOUT -v "home/ubuntu/repos/docker/bundles:/go/src/github.com/docker/docker/bundles" -t "docker-dev:dry-run-test" bash root@f31fa223770f:/go/src/github.com/docker/docker# ``` diff --git a/components/engine/docs/contributing/software-req-win.md b/components/engine/docs/contributing/software-req-win.md index 3be4327933..d51861cbe5 100644 --- a/components/engine/docs/contributing/software-req-win.md +++ b/components/engine/docs/contributing/software-req-win.md @@ -109,7 +109,7 @@ To test it, stop the system Docker daemon and start the one you just built: .\dockerd.exe -D The other make targets work too, to run unit tests try: -`docker run --rm docker-builder sh -c 'cd /c/go/src/github.com/moby/moby; hack/make.sh test-unit'`. +`docker run --rm docker-builder sh -c 'cd /c/go/src/github.com/docker/docker; hack/make.sh test-unit'`. ### 6. Remove the interim binaries container diff --git a/components/engine/docs/contributing/test.md b/components/engine/docs/contributing/test.md index 6a4c984a39..7e9107d116 100644 --- a/components/engine/docs/contributing/test.md +++ b/components/engine/docs/contributing/test.md @@ -107,13 +107,13 @@ Try this now. `dry-run-test` image. ```bash - $ docker run --privileged --rm -ti -v `pwd`:/go/src/github.com/moby/moby dry-run-test /bin/bash + $ docker run --privileged --rm -ti -v `pwd`:/go/src/github.com/docker/docker dry-run-test /bin/bash ``` 3. Run the tests using the `hack/make.sh` script. ```bash - root@5f8630b873fe:/go/src/github.com/moby/moby# hack/make.sh dynbinary binary cross test-unit test-integration test-docker-py + root@5f8630b873fe:/go/src/github.com/docker/docker# hack/make.sh dynbinary binary cross test-unit test-integration test-docker-py ``` The tests run just as they did within your local host. @@ -122,7 +122,7 @@ Try this now. just the unit tests: ```bash - root@5f8630b873fe:/go/src/github.com/moby/moby# hack/make.sh dynbinary binary cross test-unit + root@5f8630b873fe:/go/src/github.com/docker/docker# hack/make.sh dynbinary binary cross test-unit ``` Most test targets require that you build these precursor targets first: @@ -170,7 +170,7 @@ $ TESTFLAGS='-check.f DockerSuite.TestBuild*' make test-integration To run the same test inside your Docker development container, you do this: ```bash -root@5f8630b873fe:/go/src/github.com/moby/moby# TESTFLAGS='-check.f TestBuild*' hack/make.sh binary test-integration +root@5f8630b873fe:/go/src/github.com/docker/docker# TESTFLAGS='-check.f TestBuild*' hack/make.sh binary test-integration ``` ## Test the Windows binary against a Linux daemon @@ -188,7 +188,7 @@ run a Bash terminal on Windows. 2. Change to the `moby` source directory. ```bash - $ cd /c/gopath/src/github.com/moby/moby + $ cd /c/gopath/src/github.com/docker/docker ``` 3. Set `DOCKER_REMOTE_DAEMON` as follows: From 4b57d7f1d38ae9139dec3670b7cc3846e254ce77 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 29 Dec 2017 02:47:56 +0100 Subject: [PATCH 7/9] Fix event filter filtering on "or" The event filter used two separate filter-conditions for "namespace" and "topic". As a result, both events matching "topic" and events matching "namespace" were subscribed to, causing events to be handled both by the "plugin" client, and "container" client. This patch rewrites the filter to match only if both namespace and topic match. Thanks to Stephen Day for providing the correct filter :) Signed-off-by: Sebastiaan van Stijn Upstream-commit: 295bb09184fe473933498bb0efb59b8acb124f55 Component: engine --- components/engine/libcontainerd/client_daemon.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/engine/libcontainerd/client_daemon.go b/components/engine/libcontainerd/client_daemon.go index a9f7c11dd1..7508968fd5 100644 --- a/components/engine/libcontainerd/client_daemon.go +++ b/components/engine/libcontainerd/client_daemon.go @@ -715,8 +715,9 @@ func (c *client) processEventStream(ctx context.Context) { eventStream, err = c.remote.EventService().Subscribe(ctx, &eventsapi.SubscribeRequest{ Filters: []string{ - "namespace==" + c.namespace, - "topic~=/tasks/", + // Filter on both namespace *and* topic. To create an "and" filter, + // this must be a single, comma-separated string + "namespace==" + c.namespace + ",topic~=|^/tasks/|", }, }, grpc.FailFast(false)) if err != nil { From 5b7cd70f03a874014bc58782899f4b049d5cabd6 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 28 Dec 2017 23:32:18 +0100 Subject: [PATCH 8/9] Update mailmap and authors Signed-off-by: Sebastiaan van Stijn Upstream-commit: 2df19b7c11349b961455b1c75b655a5f017dd7a4 Component: engine --- components/engine/.mailmap | 61 +++++++++++++++++++--------- components/engine/AUTHORS | 83 +++++++++++++++++++++++++++----------- 2 files changed, 100 insertions(+), 44 deletions(-) diff --git a/components/engine/.mailmap b/components/engine/.mailmap index 928e8177d2..4308b8db6f 100644 --- a/components/engine/.mailmap +++ b/components/engine/.mailmap @@ -9,9 +9,12 @@ Patrick Stapleton Shishir Mahajan Erwin van der Koogh +Abhinandan Prativadi Ahmed Kamal Alessandro Boch Tejesh Mehta +Chao Wang +Corbin Coleman Cristian Staretu Cristian Staretu Cristian Staretu @@ -83,7 +86,8 @@ Jean-Baptiste Dalido - +Brandon Philips +Brandon Philips @@ -99,7 +103,7 @@ Sven Dowideit <¨SvenDowideit@home.org.au¨> Sven Dowideit Sven Dowideit Sven Dowideit - +Marcelo Horacio Fortino Akihiro Matsushima Alexander Morozov @@ -129,10 +133,9 @@ Nathan LeClaire Matthew Heon - - - +Andrew Weiss +Andrew Weiss Francisco Carriedo @@ -155,14 +158,15 @@ Jessica Frazelle Jessica Frazelle Jessica Frazelle Jessica Frazelle +Kamjar Gerami Sebastiaan van Stijn Sebastiaan van Stijn -Thomas LEVEIL Thomas LÉVEIL +Thomas Léveil +Thomas Léveil - Antonio Murdaca Antonio Murdaca Antonio Murdaca @@ -206,16 +210,18 @@ Paul Liljenberg Pawel Konczalski Philip Alexander Etling Peter Jaffe -AJ Bowen soulshake -AJ Bowen soulshake +AJ Bowen +AJ Bowen Tibor Vass Tibor Vass -Vincent Bernat +Vincent Bernat +Vincent Bernat Yestin Sun -bin liu +Bin Liu +Bin Liu John Howard (VM) jhowardmsft Ankush Agarwal -Tangi COLIN tangicolin +Tangi Colin Allen Sun Allen Sun Adrien Gallouët @@ -224,12 +230,12 @@ Anuj Bahuguna Anusha Ragunathan Avi Miller Brent Salisbury -Chander G +Chander Govindarajan Chun Chen Ying Li Daehyeok Mun - -Daniel, Dao Quang Minh +Daniel Dao +Daniel Dao Daniel Nephin Dave Tucker Doug Tangren @@ -256,7 +262,7 @@ Moysés Borges Nigel Poulton Qiang Huang - +Qiang Huang Boaz Shuster Shuwei Hao @@ -274,10 +280,11 @@ Tristan Carel Vincent Demeester Vishnu Kannan -xlgao-zju xlgao +Xianglin Gao Yu Changchun y00277921 Yu Changchun - +Zachary Jaffee +Zachary Jaffee @@ -305,9 +312,10 @@ David M. Karr Kenfe-Mickaël Laventure - +Kai Qiang Wu (Kennan) +Kai Qiang Wu (Kennan) - +Nick Russo Runshen Zhu Tom Barlow Tom Sweeney @@ -343,9 +351,11 @@ Eugen Krizo Evgeny Shmarnev Evelyn Xu Felix Ruess +Feng Yan Gabriel Nicolas Avellaneda Gang Qiao <1373319223@qq.com> George Kontridze +Gerwim Feiken Gopikannan Venugopalsamy Gou Rao Greg Stephens @@ -354,13 +364,18 @@ Harshal Patil Helen Xie Hyzhou Zhy <1187766782@qq.com> Hyzhou Zhy +Jack Laxson Jacob Tomlinson +Jeroen Franse Jiuyue Ma John Stephens +Jordan Jennings +Jorit Kleine-Möllhoff Jose Diaz-Gonzalez Josh Eveleth Josh Soref Josh Wilson +Joyce Jang Jim Galasyn Kevin Kern Konstantin Gribov @@ -383,11 +398,13 @@ Pavel Tikhomirov Peter Choi Peter Dave Hello Philipp Gillé +Renaud Gaubert Robert Terhaar Roberto Muñoz Fernández Roman Dudin Sandeep Bansal Sandeep Bansal +Sargun Dhillon Sean Lee Shaun Kaasten Shukui Yang @@ -399,6 +416,7 @@ Tim Bart Tim Zju <21651152@zju.edu.cn> Tõnis Tiigi Trishna Guha +Umesh Yadav Wayne Song Wang Guoliang Wang Jie @@ -410,9 +428,11 @@ Wei Wu cizixs Xiaoyu Zhang Xuecong Liao Yamasaki Masahide +Yazhong Liu Yassine Tijani Ying Li Yong Tang +Yosef Fertel Yu Chengxia Yu Peng Yu Peng @@ -420,3 +440,4 @@ Yao Zaiyong ZhangHang Zhenkun Bi Zhu Kunjia +Zou Yu diff --git a/components/engine/AUTHORS b/components/engine/AUTHORS index f465a87903..afafb2d729 100644 --- a/components/engine/AUTHORS +++ b/components/engine/AUTHORS @@ -26,6 +26,7 @@ Adam Walz Addam Hardy Aditi Rajagopal Aditya +Adnan Khan Adolfo Ochagavía Adria Casas Adrian Moisey @@ -43,6 +44,7 @@ ajneu Akash Gupta Akihiro Matsushima Akihiro Suda +Akim Demaille Akira Koyasu Akshay Karle Al Tobey @@ -105,6 +107,7 @@ Andre Dublin <81dublin@gmail.com> Andre Granovsky Andrea Luzzardi Andrea Turli +Andreas Elvers Andreas Köhler Andreas Savvides Andreas Tiefenthaler @@ -123,8 +126,9 @@ Andrew Macpherson Andrew Martin Andrew McDonnell Andrew Munsell +Andrew Pennebaker Andrew Po -Andrew Weiss +Andrew Weiss Andrew Williams Andrews Medina Andrey Petrov @@ -144,6 +148,7 @@ Anil Madhavapeddy Ankush Agarwal Anonmily Anran Qiao +Anshul Pundir Anthon van der Neut Anthony Baire Anthony Bishopric @@ -167,6 +172,7 @@ Arthur Barr Arthur Gautier Artur Meyster Arun Gupta +Asad Saeeduddin Asbjørn Enge averagehuman Avi Das @@ -199,7 +205,7 @@ Bhiraj Butala Bhumika Bayani Bilal Amarni Bill W -bin liu +Bin Liu Bingshen Wang Blake Geno Boaz Shuster @@ -213,12 +219,13 @@ boynux Bradley Cicenas Bradley Wright Brandon Liu -Brandon Philips +Brandon Philips Brandon Rhodes Brendan Dixon Brent Salisbury Brett Higgins Brett Kochendorfer +Brett Randall Brian (bex) Exelbierd Brian Bland Brian DeHamer @@ -266,7 +273,8 @@ Cedric Davies Cezar Sa Espinola Chad Swenson Chance Zibolski -Chander G +Chander Govindarajan +Chao Wang Charles Chan Charles Hooper Charles Law @@ -284,6 +292,8 @@ Chen Hanxiao Chen Min Chen Mingjie Chen Qiu +Cheng-mean Liu +Chetan Birajdar Chewey Chia-liang Kao chli @@ -306,6 +316,7 @@ Chris Swan Chris Wahl Chris Weyl Christian Berendt +Christian Brauner Christian Böhme Christian Persson Christian Rotzoll @@ -333,6 +344,7 @@ Colin Walters Collin Guarino Colm Hally companycy +Corbin Coleman Corey Farrell Cory Forsyth cressie176 @@ -363,6 +375,7 @@ Dan McPherson Dan Stine Dan Williams Daniel Antlinger +Daniel Dao Daniel Exner Daniel Farrell Daniel Garcia @@ -381,9 +394,9 @@ Daniel Von Fange Daniel X Moore Daniel YC Lin Daniel Zhang -Daniel, Dao Quang Minh Danny Berger Danny Yates +Danyal Khaliq Darren Coxall Darren Shepherd Darren Stahl @@ -431,6 +444,7 @@ Denis Defreyne Denis Gladkikh Denis Ollier Dennis Chen +Dennis Chen Dennis Docter Derek Derek @@ -516,6 +530,7 @@ Eric Paris Eric Rafaloff Eric Rosenberg Eric Sage +Eric Soderstrom Eric Yang Eric-Olivier Lamey Erica Windisch @@ -567,6 +582,7 @@ Felix Hupfeld Felix Rabe Felix Ruess Felix Schindler +Feng Yan Fengtu Wang Ferenc Szabo Fernando @@ -586,7 +602,6 @@ Florian Weingarten Florin Asavoaie Florin Patan fonglh -fortinux Foysal Iqbal Francesc Campoy Francis Chuang @@ -601,8 +616,7 @@ Frederick F. Kautz IV Frederik Loeffert Frederik Nordahl Jul Sabroe Freek Kalter -frosforever -fy2462 +Frieder Bluemle Félix Baylac-Jacqué Félix Cantournet Gabe Rosenhouse @@ -629,7 +643,8 @@ Georgi Hristozov Gereon Frey German DZ Gert van Valkenhoef -Gerwim +Gerwim Feiken +Ghislain Bourgeois Giampaolo Mancini Gianluca Borello Gildas Cuisinier @@ -673,6 +688,7 @@ Harry Zhang Harshal Patil Harshal Patil He Simei +He Xiaoxi He Xin heartlock <21521209@zju.edu.cn> Hector Castro @@ -708,6 +724,7 @@ Iavael Icaro Seara Ignacio Capurro Igor Dolzhikov +Igor Karpovich Iliana Weller Ilkka Laukkanen Ilya Dmitrichenko @@ -726,9 +743,11 @@ Ivan Markin J Bruni J. Nunn Jack Danger Canty +Jack Laxson Jacob Atzen Jacob Edelman Jacob Tomlinson +Jacob Vallejo Jacob Wen Jake Champlin Jake Moshenko @@ -785,6 +804,7 @@ Jean-Christophe Berthon Jean-Paul Calderone Jean-Pierre Huynh Jean-Tiare Le Bigot +Jeeva S. Chelladhurai Jeff Anderson Jeff Johnston Jeff Lindsay @@ -803,6 +823,7 @@ Jeremy Price Jeremy Qian Jeremy Unruh Jeremy Yallop +Jeroen Franse Jeroen Jacobs Jesse Dearing Jesse Dubay @@ -814,6 +835,7 @@ Ji.Zhilong Jian Zhang jianbosun Jie Luo +Jihyun Hwang Jilles Oldenbeuving Jim Alateras Jim Galasyn @@ -880,10 +902,11 @@ Jonathan Stoppani Jonh Wendell Joni Sar Joost Cassee -Jordan Jordan Arentsen +Jordan Jennings Jordan Sissel Jorge Marin +Jorit Kleine-Möllhoff Jose Diaz-Gonzalez Joseph Anthony Pasquale Holsten Joseph Hager @@ -900,9 +923,8 @@ Josh Soref Josh Wilson Josiah Kiehl José Tomás Albornoz +Joyce Jang JP -jrabbit -jroenf Julian Taylor Julien Barbier Julien Bisconti @@ -927,9 +949,9 @@ Jérôme Petazzoni Jörg Thalheim K. Heller Kai Blin -Kai Qiang Wu(Kennan) +Kai Qiang Wu (Kennan) Kamil Domański -kamjar gerami +Kamjar Gerami Kanstantsin Shautsou Kara Alexandra Karan Lyons @@ -938,6 +960,7 @@ kargakis Karl Grzeszczak Karol Duleba Karthik Nayak +Kate Heddleston Katie McLaughlin Kato Kazuyoshi Katrina Owen @@ -1025,6 +1048,7 @@ Levi Gross Lewis Daly Lewis Marshall Lewis Peckover +Li Yi Liam Macgillavry Liana Lo Liang Mingqiang @@ -1056,6 +1080,7 @@ Luca Orlandi Luca-Bogdan Grigorescu Lucas Chan Lucas Chi +Lucas Molas Luciano Mores Luis Martínez de Bartolomé Izquierdo Luiz Svoboda @@ -1087,11 +1112,13 @@ Marc Abramowitz Marc Kuo Marc Tamsky Marcel Edmund Franke +Marcelo Horacio Fortino Marcelo Salazar Marco Hennings Marcus Cobden Marcus Farkas Marcus Linke +Marcus Martins Marcus Ramberg Marek Goldmann Marian Marinov @@ -1204,6 +1231,7 @@ Mike Chelen Mike Danese Mike Dillon Mike Dougherty +Mike Estes Mike Gaffney Mike Goelzer Mike Leone @@ -1219,6 +1247,7 @@ mingqing Mingzhen Feng Misty Stanley-Jones Mitch Capper +Mizuki Urushida mlarcher Mohammad Banikazemi Mohammed Aaqib Ansari @@ -1262,20 +1291,21 @@ Neyazul Haque Nghia Tran Niall O'Higgins Nicholas E. Rabenau -nick Nick DeCoursin Nick Irvine Nick Parker Nick Payne +Nick Russo Nick Stenning Nick Stinemates NickrenREN Nicola Kabar Nicolas Borboën -Nicolas De loof +Nicolas De Loof Nicolas Dudebout Nicolas Goy Nicolas Kaiser +Nicolas Sterchele Nicolás Hock Isaza Nigel Poulton Nik Nyby @@ -1391,7 +1421,6 @@ Prayag Verma Przemek Hejman Pure White pysqz -qhuang Qiang Huang Qinglan Peng qudongfang @@ -1422,6 +1451,7 @@ Remy Suen Renato Riccieri Santos Zannon Renaud Gaubert Rhys Hiltner +Ri Xu Ricardo N Feliciano Rich Moyse Rich Seymour @@ -1493,6 +1523,7 @@ Ryan Liu Ryan McLaughlin Ryan O'Donnell Ryan Seto +Ryan Simmen Ryan Thomas Ryan Trauntvein Ryan Wallner @@ -1526,6 +1557,7 @@ Sankar சங்கர் Sanket Saurav Santhosh Manohar sapphiredev +Sargun Dhillon Sascha Andres Satnam Singh Satoshi Amemiya @@ -1569,6 +1601,7 @@ Shengbo Song Shev Yan Shih-Yuan Lee Shijiang Wei +Shijun Qin Shishir Mahajan Shoubhik Bose Shourya Sarcar @@ -1641,7 +1674,7 @@ Tabakhase Tadej Janež TAGOMORI Satoshi tang0th -Tangi COLIN +Tangi Colin Tatsuki Sugiura Tatsushi Inagaki Taylor Jones @@ -1662,7 +1695,7 @@ Thomas Gazagnaire Thomas Grainger Thomas Hansen Thomas Leonard -Thomas LEVEIL +Thomas Léveil Thomas Orozco Thomas Riccardi Thomas Schroeter @@ -1744,6 +1777,7 @@ Tyler Brock Tzu-Jung Lee uhayate Ulysse Carion +Umesh Yadav Utz Bacher vagrant Vaidas Jablonskis @@ -1763,7 +1797,6 @@ Viktor Stanchev Viktor Vojnovski VinayRaghavanKS Vincent Batts -Vincent Bernat Vincent Bernat Vincent Demeester Vincent Giersch @@ -1837,7 +1870,6 @@ xiekeyang Xinbo Weng Xinzi Zhou Xiuming Chen -xlgao-zju Xuecong Liao xuzhaokui Yahya @@ -1851,6 +1883,7 @@ Yanqiang Miao Yao Zaiyong Yassine Tijani Yasunori Mahata +Yazhong Liu Yestin Sun Yi EungJun Yibai Zhang @@ -1859,7 +1892,7 @@ Ying Li Yohei Ueda Yong Tang Yongzhi Pan -yorkie +Yosef Fertel You-Sheng Yang (楊有勝) Youcef YEKHLEF Yu Changchun @@ -1871,10 +1904,10 @@ Yuanhong Peng Yuhao Fang Yunxiang Huang Yurii Rashkovskii -yuzou +Yves Junqueira Zac Dover Zach Borboa -Zachary Jaffee +Zachary Jaffee Zain Memon Zaiste! Zane DeGraffenried @@ -1898,6 +1931,7 @@ Ziming Dong ZJUshuaizhou <21551191@zju.edu.cn> zmarouf Zoltan Tombol +Zou Yu zqh Zuhayr Elahi Zunayed Ali @@ -1907,3 +1941,4 @@ Zunayed Ali 尹吉峰 徐俊杰 搏通 +黄艳红00139573 From 8e9edf70c7f1e23716f30ded1bcdc9eb943570da Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Fri, 29 Dec 2017 00:09:31 +0100 Subject: [PATCH 9/9] Cleanup and sort .mailmap Signed-off-by: Sebastiaan van Stijn Upstream-commit: 63c86ad2eade7d0d5128100a6eb1d5cac245adbc Component: engine --- components/engine/.mailmap | 654 ++++++++++++++++++------------------- 1 file changed, 326 insertions(+), 328 deletions(-) diff --git a/components/engine/.mailmap b/components/engine/.mailmap index 4308b8db6f..1078d5456c 100644 --- a/components/engine/.mailmap +++ b/components/engine/.mailmap @@ -6,331 +6,70 @@ # # For explanation on this file format: man git-shortlog -Patrick Stapleton -Shishir Mahajan -Erwin van der Koogh -Abhinandan Prativadi -Ahmed Kamal -Alessandro Boch -Tejesh Mehta -Chao Wang -Corbin Coleman -Cristian Staretu -Cristian Staretu -Cristian Staretu -Marcus Linke -Aleksandrs Fadins -Christopher Latham -Hu Keping -Wayne Chang -Chen Chao -Daehyeok Mun - - - - - - -Guillaume J. Charmes - - - - - -Thatcher Peskens -Thatcher Peskens -Thatcher Peskens dhrp -Jérôme Petazzoni -Jérôme Petazzoni -Jérôme Petazzoni -Joffrey F -Joffrey F -Joffrey F -Kir Kolyshkin -Kir Kolyshkin -Lorenzo Fontana +<21551195@zju.edu.cn> -Tim Terhorst -Andy Smith - - - - - - - - - -Walter Stanish - -Roberto Hashioka -Konstantin Pelykh -David Sissitka -Nolan Darilek - -Benoit Chesneau -Jordan Arentsen -Daniel Garcia -Miguel Angel Fernández -Bhiraj Butala -Faiz Khan -Victor Lyuboslavsky -Jean-Baptiste Barth -Matthew Mueller - -Shih-Yuan Lee -Daniel Mizyrycki root -Jean-Baptiste Dalido - - - - - -Brandon Philips -Brandon Philips - - - - - - - - -Sven Dowideit -Sven Dowideit -Sven Dowideit -Sven Dowideit <¨SvenDowideit@home.org.au¨> -Sven Dowideit -Sven Dowideit -Sven Dowideit -Marcelo Horacio Fortino -Akihiro Matsushima - -Alexander Morozov -Alexander Morozov - -O.S. Tezer - -Roberto G. Hashioka - - - - - -Sridhar Ratnakumar -Sridhar Ratnakumar -Liang-Chi Hsieh Aaron L. Xu +Abhinandan Prativadi +Adrien Gallouët +Ahmed Kamal +Ahmet Alp Balkan +AJ Bowen +AJ Bowen +Akihiro Matsushima +Akihiro Suda Aleksa Sarai Aleksa Sarai Aleksa Sarai -Will Weaver -Timothy Hobbs -Nathan LeClaire -Nathan LeClaire - - - - -Matthew Heon - -Andrew Weiss -Andrew Weiss -Francisco Carriedo - - - - -Brian Goff - -Erica Windisch -Erica Windisch - -Hollie Teal - - - -Jessica Frazelle -Jessica Frazelle -Jessica Frazelle -Jessica Frazelle -Jessica Frazelle -Jessica Frazelle -Jessica Frazelle -Jessica Frazelle -Kamjar Gerami - - - -Sebastiaan van Stijn -Sebastiaan van Stijn -Thomas Léveil -Thomas Léveil - -Antonio Murdaca -Antonio Murdaca -Antonio Murdaca -Antonio Murdaca -Antonio Murdaca -Darren Shepherd -Deshi Xiao -Deshi Xiao -Doug Davis -Giampaolo Mancini -Hakan Özler -K. Heller -Jacob Atzen -Jeff Nickoloff -Jérôme Petazzoni -John Harris -John Howard (VM) -John Howard (VM) -John Howard (VM) -John Howard (VM) -John Howard (VM) -Kevin Feyrer -Liao Qingwei -Luke Marsden -Madhan Raj Mookkandy -Madhu Venugopal -Mageee <21521230.zju.edu.cn> -Mansi Nahar -Mansi Nahar -Markus Kortlang -Mary Anthony -Mary Anthony moxiegirl -Mary Anthony -Matt Schurenko -Matt Williams -Matt Williams -Michael Spetsiotis -Nik Nyby -Ouyang Liduo -Paul Liljenberg -Pawel Konczalski -Philip Alexander Etling -Peter Jaffe -AJ Bowen -AJ Bowen -Tibor Vass -Tibor Vass -Vincent Bernat -Vincent Bernat -Yestin Sun -Bin Liu -Bin Liu -John Howard (VM) jhowardmsft -Ankush Agarwal -Tangi Colin +Aleksandrs Fadins +Alessandro Boch +Alex Chen +Alex Ellis +Alexander Larsson +Alexander Morozov +Alexander Morozov +Alexandre Beslic +Alicia Lauerman Allen Sun Allen Sun -Adrien Gallouët - +Andrew Weiss +Andrew Weiss +André Martins +Andy Rothfusz +Andy Smith +Ankush Agarwal +Antonio Murdaca +Antonio Murdaca +Antonio Murdaca +Antonio Murdaca +Antonio Murdaca Anuj Bahuguna +Anuj Bahuguna Anusha Ragunathan -Avi Miller -Brent Salisbury -Chander Govindarajan -Chun Chen -Ying Li -Daehyeok Mun -Daniel Dao -Daniel Dao -Daniel Nephin -Dave Tucker -Doug Tangren -Euan Kemp -Frederick F. Kautz IV -Fengtu Wang -Ben Golub -Harold Cooper -hsinko <21551195@zju.edu.cn> -Josh Hawn -Justin Cormack - - -Kamil Domański -Lei Jitang - -Linus Heckemann - -Lynda O'Leary - -Marianna Tessel -Michael Huettermann -Moysés Borges - -Nigel Poulton -Qiang Huang -Qiang Huang -Boaz Shuster -Shuwei Hao - -Soshi Katsuta - -Stefan Berger - -Stefan J. Wernli -Stephen Day - -Toli Kuznets -Tristan Carel - - - -Vincent Demeester -Vishnu Kannan -Xianglin Gao -Yu Changchun y00277921 -Yu Changchun -Zachary Jaffee -Zachary Jaffee - - - -Hao Shu Wei - - - - - - - -Shengbo Song mYmNeo -Shengbo Song - -Sylvain Bellemare - - - Arnaud Porterie - -David M. Karr - - - -Kenfe-Mickaël Laventure - - -Kai Qiang Wu (Kennan) -Kai Qiang Wu (Kennan) - -Nick Russo -Runshen Zhu -Tom Barlow -Tom Sweeney -Xianlu Bird -Dan Feldman -Harry Zhang -Harry Zhang -Harry Zhang -Harry Zhang -Alex Chen alexchen -Alex Ellis -Alicia Lauerman +Arnaud Porterie +Arthur Gautier +Avi Miller Ben Bonnefoy +Ben Golub +Ben Toews +Benoit Chesneau +Bhiraj Butala Bhumika Bayani +Bilal Amarni +Bin Liu +Bin Liu Bingshen Wang +Boaz Shuster +Brandon Philips +Brandon Philips +Brent Salisbury +Brian Goff +Brian Goff +Brian Goff +Chander Govindarajan +Chao Wang +Charles Hooper +Chen Chao Chen Chuanliang Chen Mingjie Chen Qiu @@ -338,105 +77,364 @@ Chen Qiu <21321229@zju.edu.cn> Chris Dias Chris McKinnel Christopher Biscardi +Christopher Latham +Chun Chen +Corbin Coleman +Cristian Staretu +Cristian Staretu +Cristian Staretu CUI Wei cuiwei13 +Daehyeok Mun +Daehyeok Mun +Daehyeok Mun +Dan Feldman +Daniel Dao +Daniel Dao +Daniel Garcia +Daniel Gasienica Daniel Grunwell Daniel J Walsh +Daniel Mizyrycki +Daniel Mizyrycki +Daniel Mizyrycki +Daniel Nephin +Daniel Norberg +Danny Yates +Darren Shepherd Dattatraya Kumbhar +Dave Henderson +Dave Tucker +David M. Karr David Sheets +David Sissitka +Deshi Xiao +Deshi Xiao Diego Siqueira -Elan Ruusamäe +Diogo Monica +Dominik Honnef +Doug Davis +Doug Tangren Elan Ruusamäe +Elan Ruusamäe Eric G. Noriega +Eric Hanchrow +Erica Windisch +Erica Windisch +Erik Hollensbe +Erwin van der Koogh +Euan Kemp Eugen Krizo -Evgeny Shmarnev Evelyn Xu +Evgeny Shmarnev +Faiz Khan Felix Ruess Feng Yan +Fengtu Wang +Francisco Carriedo +Frank Rosquin +Frederick F. Kautz IV Gabriel Nicolas Avellaneda Gang Qiao <1373319223@qq.com> George Kontridze Gerwim Feiken +Giampaolo Mancini Gopikannan Venugopalsamy Gou Rao Greg Stephens +Guillaume J. Charmes +Guillaume J. Charmes +Guillaume J. Charmes +Guillaume J. Charmes +Guillaume J. Charmes +Gurjeet Singh Gustav Sinder +Hakan Özler +Hao Shu Wei +Hao Shu Wei +Harald Albers +Harold Cooper +Harry Zhang +Harry Zhang +Harry Zhang +Harry Zhang Harshal Patil Helen Xie -Hyzhou Zhy <1187766782@qq.com> +Hollie Teal +Hollie Teal +Hollie Teal +Hu Keping +Huu Nguyen Hyzhou Zhy +Hyzhou Zhy <1187766782@qq.com> Jack Laxson +Jacob Atzen Jacob Tomlinson +Jean-Baptiste Barth +Jean-Baptiste Dalido +Jean-Tiare Le Bigot +Jeff Anderson +Jeff Nickoloff Jeroen Franse +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jessica Frazelle +Jim Galasyn Jiuyue Ma +Joffrey F +Joffrey F +Joffrey F +Johan Euphrosine +John Harris +John Howard (VM) +John Howard (VM) +John Howard (VM) +John Howard (VM) +John Howard (VM) John Stephens +Jordan Arentsen Jordan Jennings Jorit Kleine-Möllhoff Jose Diaz-Gonzalez Josh Eveleth +Josh Hawn +Josh Horwitz Josh Soref Josh Wilson Joyce Jang -Jim Galasyn +Julien Bordellier +Julien Bordellier +Justin Cormack +Justin Cormack +Justin Cormack +Justin Simonelis +Jérôme Petazzoni +Jérôme Petazzoni +Jérôme Petazzoni +K. Heller +Kai Qiang Wu (Kennan) +Kai Qiang Wu (Kennan) +Kamil Domański +Kamjar Gerami +Ken Cochrane +Ken Herner +Kenfe-Mickaël Laventure +Kevin Feyrer Kevin Kern +Kir Kolyshkin +Kir Kolyshkin +Konrad Kleine Konstantin Gribov +Konstantin Pelykh Kunal Kushwaha Lajos Papp +Lei Jitang +Lei Jitang Liang Mingqiang +Liang-Chi Hsieh +Liao Qingwei +Linus Heckemann +Linus Heckemann +Lokesh Mandvekar +Lorenzo Fontana +Louis Opter +Louis Opter +Luke Marsden Lyn -Markan Patel -Matthew Mosesohn -Michael Käufl -Michal Minář -Michael Hudson-Doyle -Mike Casas -Milind Chawre +Lynda O'Leary +Lynda O'Leary Ma Müller +Madhan Raj Mookkandy +Madhu Venugopal +Mageee <21521230.zju.edu.cn> +Mansi Nahar +Mansi Nahar +Marc Abramowitz +Marcelo Horacio Fortino +Marcus Linke +Marianna Tessel +Markan Patel +Markus Kortlang +Martin Redmond +Martin Redmond +Mary Anthony +Mary Anthony +Mary Anthony moxiegirl +Matt Bentley +Matt Schurenko +Matt Williams +Matt Williams +Matthew Heon +Matthew Mosesohn +Matthew Mueller +Matthias Kühnle +Mauricio Garavaglia +Michael Crosby +Michael Crosby +Michael Crosby +Michael Hudson-Doyle +Michael Huettermann +Michael Käufl +Michael Spetsiotis +Michal Minář +Miguel Angel Fernández +Mihai Borobocea +Mike Casas +Mike Goelzer +Milind Chawre +Misty Stanley-Jones +Mohit Soni Moorthy RS +Moysés Borges +Moysés Borges Nace Oroz +Nathan LeClaire +Nathan LeClaire Neil Horman +Nick Russo +Nigel Poulton +Nik Nyby +Nolan Darilek +O.S. Tezer +O.S. Tezer +Oh Jinkyun +Ouyang Liduo +Patrick Stapleton +Paul Liljenberg Pavel Tikhomirov +Pawel Konczalski Peter Choi Peter Dave Hello +Peter Jaffe +Peter Waller +Phil Estes +Philip Alexander Etling Philipp Gillé +Qiang Huang +Qiang Huang Renaud Gaubert Robert Terhaar +Roberto G. Hashioka Roberto Muñoz Fernández Roman Dudin -Sandeep Bansal +Runshen Zhu Sandeep Bansal +Sandeep Bansal Sargun Dhillon Sean Lee +Sebastiaan van Stijn +Sebastiaan van Stijn Shaun Kaasten +Shawn Landden +Shengbo Song +Shengbo Song +Shih-Yuan Lee +Shishir Mahajan Shukui Yang +Shuwei Hao +Shuwei Hao +Sjoerd Langkemper +Solomon Hykes +Solomon Hykes +Solomon Hykes +Soshi Katsuta +Soshi Katsuta +Sridhar Ratnakumar +Sridhar Ratnakumar +Srini Brahmaroutu Srinivasan Srivatsan +Stefan Berger +Stefan Berger +Stefan J. Wernli Stefan S. +Stephen Day +Stephen Day Steve Desmond Sun Gengze <690388648@qq.com> +Sven Dowideit +Sven Dowideit +Sven Dowideit +Sven Dowideit +Sven Dowideit +Sven Dowideit +Sven Dowideit <¨SvenDowideit@home.org.au¨> +Sylvain Bellemare +Sylvain Bellemare +Tangi Colin +Tejesh Mehta +Thatcher Peskens +Thatcher Peskens +Thatcher Peskens +Thomas Gazagnaire +Thomas Léveil +Thomas Léveil +Tibor Vass +Tibor Vass Tim Bart +Tim Bosse +Tim Ruffles +Tim Terhorst Tim Zju <21651152@zju.edu.cn> +Timothy Hobbs +Toli Kuznets +Tom Barlow +Tom Sweeney Tõnis Tiigi Trishna Guha +Tristan Carel +Tristan Carel Umesh Yadav -Wayne Song +Victor Lyuboslavsky +Victor Vieux +Victor Vieux +Victor Vieux +Victor Vieux +Victor Vieux +Victor Vieux +Viktor Vojnovski +Vincent Batts +Vincent Bernat +Vincent Bernat +Vincent Demeester +Vincent Demeester +Vincent Demeester +Vishnu Kannan +Vladimir Rutsky +Walter Stanish Wang Guoliang Wang Jie Wang Ping Wang Yuexiao +Wayne Chang +Wayne Song +Wei Wu cizixs Wenjun Tang Wewang Xiaorenfine -Wei Wu cizixs +Will Weaver +Xianglin Gao +Xianlu Bird Xiaoyu Zhang Xuecong Liao Yamasaki Masahide -Yazhong Liu +Yao Zaiyong Yassine Tijani +Yazhong Liu +Yestin Sun +Yi EungJun +Ying Li Ying Li Yong Tang Yosef Fertel +Yu Changchun Yu Chengxia Yu Peng Yu Peng -Yao Zaiyong +Zachary Jaffee +Zachary Jaffee ZhangHang Zhenkun Bi Zhu Kunjia