Commit Graph

33189 Commits

Author SHA1 Message Date
f21c0ccd84 Merge pull request #37131 from kolyshkin/top-opt
Optimize ContainerTop() aka docker top
Upstream-commit: 65bd038fc5e47ed37d2702cbdd6ce484d320380b
Component: engine
2018-05-30 03:28:07 +02:00
8b1898b015 Merge pull request #37166 from yongtang/05282018-unique-service-name
Add `t.Name()` to tests so that service names are unique
Upstream-commit: 864b36255dce627443b18e7e44549d506a71f14a
Component: engine
2018-05-29 12:04:21 +02:00
37672d40d5 Add t.Name() to tests so that service names are unique
This fix adds `t.Name()` to tests in integration/network
so that services created in those tests have unique names.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
Upstream-commit: 76195f8047eb9a6be710d53ec493ab97bcf86e20
Component: engine
2018-05-28 22:57:52 +00:00
2c7c1d708b Alternative failure mitigation of TestExecInteractiveStdinClose
Begin to copy the data until the command to exit and any coping to
stdin or copy from stdout/stderr has completed.
Also adding defense code to trim the possible '\x00' null value.

Signed-off-by: Dennis Chen <dennis.chen@arm.com>
Upstream-commit: 386e0f36c42593ef434517448ccfac5262f958d6
Component: engine
2018-05-28 11:25:31 +08:00
7cd3587aa3 Merge pull request #37141 from thaJeztah/bump_api_v1_38
Update API version to v1 38
Upstream-commit: 9c2c887b125df56e622d20ebbbe626c55b61e44a
Component: engine
2018-05-24 17:54:05 -10:00
034a285949 ContainerTop: improve error message
If "ps" fails, in many cases it prints a meaningful error message
which a user can benefit from. Let's use it.

While at it, let's use errdefs.System to classify the error,
as well as errors.Wrap.

Before:

> $ docker top $CT <any bad ps options>
> Error response from daemon: Error running ps: exit status 1

After:

> $ docker top $CT auxm
> Error response from daemon: ps: error: thread display conflicts with forest display

or

> $ docker top $CT saur
> Error response from daemon: ps: error: conflicting format options

or, if there's no meaningful error on stderr, same as before:

> $ docker top $CT 1234
> Error response from daemon: ps: exit status 1

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: a41328d5704b8d1adbcd099fb4bb0697060df806
Component: engine
2018-05-24 18:24:36 -07:00
b7dcd71938 ContainerTop: speed up
Current ContainerTop (a.k.a. docker top) implementation uses "ps"
to get the info about *all* running processes, then parses it, then
filters the results to only contain PIDs used by the container.
Collecting data only to throw most of it away is inefficient,
especially on a system running many containers (or processes).
For example, "docker top" on a container with a single process
can take up to 0.5 seconds to execute (on a mostly idle system)
which is noticeably slow.

Since the containers PIDs are known beforehand, let's use ps's
"-q" option to provide it with a list of PIDs we want info about.

The problem with this approach is, some ps options can't be used
with "-q" (the only one I'm aware of is "f" ("forest view") but
there might be more). As the list of such options is not known,
in case ps fails, it is executed again without "q" (retaining
the old behavior).

Next, the data produced by "ps" is filtered in the same way as before.
The difference here is, in case "-q" worked, the list is much shorter.

I ran some benchmarks on my laptop, with about 8000 "sleep" processes
running to amplify the savings.

The improvement in "docker top" execution times is 5x to 10x (roughly
0.05s vs 0.5s).

The improvement in ContainerTop() execution time is up to 100x
(roughly 3ms vs 300ms).

I haven't measured the memory or the CPU time savings, guess those
are not that critical.

NOTE that busybox ps does not implement -q so the fallback is always
used, but AFAIK it is not usable anyway and Docker expects a normal
ps to be on the system (say the list of fields produced by
"busybox ps -ef" differs from normal "ps -ef" etc.).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: a076badb8b33f1ecdc5d46f0a3701f10c0579f73
Component: engine
2018-05-24 18:24:27 -07:00
8c68c67c26 Merge pull request #37136 from muesli/sdnotify-api-const
Use go-systemd const instead of magic string in Linux version of dockerd
Upstream-commit: 80bfcc3a7a870c5b3683489ebc6fec9d67a3dfc4
Component: engine
2018-05-24 14:30:28 +02:00
d75e37db71 Merge pull request #37133 from cpuguy83/bump_continuity
Bump continuity
Upstream-commit: aa2d23a7357d4e827391705b8796a59df78c466d
Component: engine
2018-05-24 13:56:59 +02:00
db35657a47 Adjust API version to match correct release
This fix was not yet included in Docker 17.05, so
API version v1.37 was not the right selector (Docker
18.03, 18.04 and 18.05 all support API v1.37).

We should change these checks for engine versions,
or use a different method to skip tests when running
against older engines.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: a061b1e2d8f6117b0524e44de7b6bc391245864e
Component: engine
2018-05-24 02:39:56 +02:00
17b4dbf7d5 Bump API version to v1.38
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: df5175e1ee955a429ac5a4f8bdfacffd4d066c26
Component: engine
2018-05-24 02:39:28 +02:00
1a3da70ee0 Merge pull request #37108 from thaJeztah/remove_unneeded_aliases
Various code-cleanup
Upstream-commit: 8e2f9203065987116aec9e2d2a1d5c7039e1a5d4
Component: engine
2018-05-24 01:38:56 +02:00
75bf6c61a8 Adapt listeners to upstream API changes in go-systemd
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
Upstream-commit: 703c3c573599e20e1059d18f74cb4a05647587ae
Component: engine
2018-05-23 21:57:30 +02:00
8e008e90c3 Merge pull request #35246 from dperny/attachment-inspect
Output network attachment task information
Upstream-commit: 5a68e2617da4b18ea4bae9fb3205026bb541e8d4
Component: engine
2018-05-23 15:44:39 -04:00
33e8d89a75 Use go-systemd const instead of magic string in Linux version of dockerd
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
Upstream-commit: d393774a53e0a45486047a80ca4ae8faf5599386
Component: engine
2018-05-23 19:06:34 +02:00
93d19d1ff6 Bump go-systemd dependency to v17
Signed-off-by: Christian Muehlhaeuser <muesli@gmail.com>
Upstream-commit: 8991bac2e045b8cac4a289928ebb743e978bbfc5
Component: engine
2018-05-23 19:06:13 +02:00
0f96e98e12 Various code-cleanup
remove unnescessary import aliases, brackets, and so on.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: f23c00d8701e4bd0f2372a586dacbf66a26f9a51
Component: engine
2018-05-23 17:50:54 +02:00
7a450d43c0 Bump continuity
Fixes an issue where `CopyDir` would truncate files larger than 2^32
bytes.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
Upstream-commit: 616fa9446e49502da501a7d0f92b13191f5058dd
Component: engine
2018-05-23 10:05:06 -04:00
144693e197 Merge pull request #36750 from kolyshkin/t-mount-seclabel
pkg/mount/TestMount: fix wrt selinux
Upstream-commit: 0846a02d549d3e0a28e7f7962b92af98992eba17
Component: engine
2018-05-23 15:22:37 +02:00
b08e109289 Merge pull request #37121 from thaJeztah/fix-exec-ids-itemtype
Set item-type for ExecIDs
Upstream-commit: bbca556a80b43ebd8383048bac03d49ac182e1a4
Component: engine
2018-05-23 11:56:47 +02:00
3f553880b1 Merge pull request #37119 from kolyshkin/test-top
TestContainerAPITop: fix flakyness
Upstream-commit: f800701008d4efdd5e92c117e99f49f343f22a93
Component: engine
2018-05-23 10:05:42 +02:00
4056a6dfa4 pkg/mount/TestMount: fix wrt selinux
Sometimes docker-master CI fails on rhel4+selinux configuration,
like this:

--- FAIL: TestMount (0.12s)
    --- FAIL: TestMount/none-remount,size=128k (0.01s)
    	mounter_linux_test.go:209: unexpected mount option "seclabel" expected "rw,size=128k"
    --- FAIL: TestMount/none-remount,ro,size=128k (0.01s)
    	mounter_linux_test.go:209: unexpected mount option "seclabel" expected "ro,size=128k"

Earlier, commit 8bebd42df2 (PR #34965) fixed this failure,
but not entirely (i.e. the test is now flaky). It looks like
either selinux detection code is not always working (it won't
work in d-in-d), or the kernel might or might not add 'seclabel'
option).

As the subject of this test case is definitely not selinux,
it can just ignore the option added by it.

While at it, fix error messages:
 - add missing commas;
 - fix a typo;
 - allow for clear distinction between mount
   and vfs (per-superblock) options.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: d78e885326213e8ef89919c3cc6d16e712e852a8
Component: engine
2018-05-22 23:30:47 -07:00
66dfe0e944 TestContainerAPITop: fix flakyness
The following failure is seen in CI from time to time:

> FAIL: docker_api_containers_test.go:435: DockerSuite.TestContainerAPITop
>
> docker_api_containers_test.go:453:
>     c.Assert(top.Processes[0][10], checker.Equals, "/bin/sh -c top")
> ... obtained string = "top"
> ... expected string = "/bin/sh -c top"

The test case expects two processes in the output:

1. /bin/sh -c top
2. top

in the given order.

Now, "ps aux" output is sorted by PID*, and so since the "top" is a child
of "/bin/sh -c top" it has a higher PID and will come second as expected
by the test... unless the PIDs on the system are exhausted and PID rollover
happens, in which case PID of "top" will be lower than that of "/bin/sh".

Fix: sort output by process name.

* - in fact it is not sorted, but is being printed in the same order as
    the kernel list PID entries in /proc directory, which appears to be
    sorted by PID (see ls -1 -U /proc).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 0823ab70990fa4cbf520726013e75c264e6c5231
Component: engine
2018-05-22 18:11:36 -07:00
6280cae03a skip feature/test added that is breaking ee
Signed-off-by: Anda Xu <anda.xu@docker.com>
Upstream-commit: 84598be35f200bd0ea28a615100c51dbaeb51898
Component: engine
2018-05-22 17:42:41 -07:00
843828ae85 daemon/parsePsOutput: minor optimisation
It does not make sense to keep looking for PID once
we found it, so let's give it a break.

The side effect of this patch is, if there's more than one column
titled "PID", the last (rightmost) column was used before, and now
the first (leftmost) column is used. Should make no practical
difference whatsoever.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 654a7625fc9f0b7b04da0e0e4d151af04a65cc7f
Component: engine
2018-05-22 16:24:13 -07:00
53104fbd7c Update swagger and API history
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 3682703ad4a75ea489aa84cbaddcfa4697a4e57e
Component: engine
2018-05-22 23:37:33 +02:00
c0a75ea18d Output network attachment task information
Adds functionality to parse and return network attachment spec
information. Network attachment tasks are phony tasks created in
swarmkit to deal with unmanaged containers attached to swarmkit. Before
this change, attempting `docker inspect` on the task id of a network
attachment task would result in an empty task object. After this change,
a full task object is returned

Fixes #26548 the correct way.

Signed-off-by: Drew Erny <drew.erny@docker.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 5b69ff466e61fa168f24869710f2070c742a5565
Component: engine
2018-05-22 23:36:30 +02:00
60c2eac8bf daemon unit tests: skip some if non-root
This prevents the following test case failures "go test" is run
as non-root in the daemon/ directory:

> --- FAIL: TestContainerInitDNS (0.02s)
> 	daemon_test.go:209: chown /tmp/docker-container-test-054812199/volumes: operation not permitted
>
> --- FAIL: TestDaemonReloadNetworkDiagnosticPort (0.00s)
>	reload_test.go:525: mkdir /var/lib/docker/network/files/: permission denied
> --- FAIL: TestRootMountCleanup (0.00s)
> 	daemon_linux_test.go:240: assertion failed: error is not nil: operation not permitted

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 16670ed4842b1ee4853ba39b6ebf2b771d28db9a
Component: engine
2018-05-22 13:12:29 -07:00
717e3937b9 more fixes on integration
Signed-off-by: Anda Xu <anda.xu@docker.com>
Upstream-commit: b9b4f888703a20ddd7670c1b978dcb1621fa210f
Component: engine
2018-05-22 11:25:25 -07:00
272a5bdcba Set item-type for ExecIDs
Arrays expect a type to be set for items in the array.

This patch adds the "string" type, adds a short description,
and some example values.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 8b6b55986644c093564497bfef51733a8d598baf
Component: engine
2018-05-22 13:18:44 +02:00
5657eef95c Merge pull request #35402 from thaJeztah/fix-GetTimestamp-parsing
Improve GetTimestamp parsing
Upstream-commit: da99009bbb1165d1ac5688b5c81d2f589d418341
Component: engine
2018-05-22 12:28:01 +02:00
ee3ee2f6b0 Merge pull request #37113 from thaJeztah/update-authors
Update authors and mailmap
Upstream-commit: dc65e85faeb2d984ea6e102fb4f5616859b1269f
Component: engine
2018-05-22 09:42:06 +02:00
4a53a3c7a9 Merge pull request #37106 from thaJeztah/unfork-cobra
Bump spf13/cobra to v0.0.3, pflag to v1.0.1
Upstream-commit: 032a4b6ef641d588556133b57c5fc2107680fcbb
Component: engine
2018-05-22 09:39:52 +02:00
61e64f5f40 Merge pull request #36962 from Rid/patch-1
Fix swagger file type for ExecIds
Upstream-commit: 8aa753329b04356b1f4ce46072c034ba6093b651
Component: engine
2018-05-22 09:39:09 +02:00
b21cab8bb2 Merge pull request #37110 from thaJeztah/remove-testutil-errorcontains
Replace deprecated testutil.ErrorContains()
Upstream-commit: 9bd5d9912f0cb4fe22b994ac1e7e10038e3be65a
Component: engine
2018-05-21 11:04:45 -07:00
1a78af7e78 Merge pull request #37111 from thaJeztah/bump-libnetwork
bump libnetwork to eb6b2a57955e5c149d47c3973573216e8f8baa09
Upstream-commit: ee640c37c877f332c0df70df3b9a8c4885c82e65
Component: engine
2018-05-21 10:40:26 -07:00
5a2c31a017 Merge pull request #37086 from arm64b/some-tweaks-for-CI-tests
Some slight tweaks for the integration test
Upstream-commit: 52e22cf986c2113f720ac73f6a82c087ab5e4e76
Component: engine
2018-05-21 09:35:15 -07:00
dcdcd81207 Merge pull request #36995 from kolyshkin/aufs-err
aufs: log why aufs is not supported
Upstream-commit: b963b55a8a3fec0e97feeb07427a91e29c870284
Component: engine
2018-05-21 10:00:39 +02:00
06bc850fec Merge pull request #37090 from thaJeztah/de-noise-integration-cleanup
Make integration tests less noisy
Upstream-commit: b1efaeff61986c9bac739e12c80500cf0fadaefd
Component: engine
2018-05-21 09:58:37 +02:00
b179a3fc0d Some slight tweaks for the integration test
`arm64` needs get more time duration for the test to finish.

`pty.Start()` opens a file, so the caller should close it explicitly,
else the file I/O can result in unexpected data synchronization issue.

All those changes will not affect the test itself.

Signed-off-by: Dennis Chen <dennis.chen@arm.com>
Upstream-commit: 476d7872efb60b1ef1bc7d9d83952f9dbc8f8798
Component: engine
2018-05-21 10:08:27 +08:00
bd96bdb953 Update authors and mailmap
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: b7e722fe30ccde2a6081be4df3fa0d7354514ba3
Component: engine
2018-05-21 01:07:22 +02:00
f5c9209600 bump libnetwork to eb6b2a57955e5c149d47c3973573216e8f8baa09
Changes included:

- libnetwork#2147 Adding logs for ipam state
- libnetwork#2143 Fix race conditions in the overlay network driver
  - possibly addresses moby#36743 services do not start: ingress-sbox is already present
  - possibly addresses moby#30427 Flaky Test: TestSwarmPublishDuplicatePorts on s390
  - possibly addresses moby#36501 Flaky tests: Service "port" tests
- libnetwork#2142 Add wait time into xtables lock warning
- libnetwork#2135 filter xtables lock warnings when firewalld is active
- libnetwork#2140 Switch from x/net/context to context
- libnetwork#2134 Adding a recovery mechanism for a split gossip cluster

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 158ab95c17bed9e849e0d935899b75018cdf61a4
Component: engine
2018-05-21 00:37:54 +02:00
659852c34d Merge pull request #37011 from arm64b/ReAdd-LABEL-command-4-target-option
Construct and add 'LABEL' command from 'label' option to last stage 
Upstream-commit: 8974fd47c7677b21c43597709655136addadb864
Component: engine
2018-05-21 00:15:02 +02:00
fac8e1d52b Replace deprecated testutil.ErrorContains()
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 55bebbaecf5e40db9d83b28080ce08dc8642f407
Component: engine
2018-05-21 00:13:04 +02:00
c2266b164c Improve GetTimestamp parsing
`GetTimestamp()` "assumed" values it could not parse
to be a valid unix timestamp, and would use invalid
values ("hello world") as-is (even testing that
it did so).

This patch validates unix timestamp to be a valid
numeric value, and makes other values invalid.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 48cfe3f0872647bf0f52e6ba65022e1859e808e8
Component: engine
2018-05-20 13:07:17 +02:00
91ebfe260a aufs: log reason why aufs is not supported.
In case aufs driver is not supported because supportsAufs() said so,
it is not possible to get a real reason from the logs.

To fix, log the error returned.

Note we're not using WithError here as the error message itself is the
sole message we want to print (i.e. there's nothing to add to it).

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: 91f85d1c784f3dc9d892b2af2f51d6b6f3b0be69
Component: engine
2018-05-20 12:02:41 +02:00
30e8f43743 aufs: use a single logger
Simplify the code by using a single logger instance.

While at it, use WithError in Umount.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
Upstream-commit: c6e2af54256211b8ac757e9b25caa6fb6c9b3c6e
Component: engine
2018-05-20 12:02:12 +02:00
c03259c23d Merge pull request #37022 from cgxu519/overlayutils-addmsg
Add additional message when backendfs is extfs without d_type support
Upstream-commit: f9dd74deee364dd513615ea112e78008a946b3e5
Component: engine
2018-05-19 22:38:45 +02:00
4f52a192ac Fix swagger file type for ExecIds
Signed-off-by: Grant Millar <grant@seednet.eu>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Upstream-commit: 58a35eaede4b121cd57cdb41e67d3654a90a144a
Component: engine
2018-05-19 22:14:38 +02:00
3b0918309f Merge pull request #37088 from ohbarye/fix-typos-duplicated-the
Fix typos: remove duplicated "the"
Upstream-commit: 3646562a5cfbf93f987d0ccffe7ca1c3487036e2
Component: engine
2018-05-19 20:57:47 +02:00