Idea #7927
closed[Crunch] arvados-docker-cleaner specifies a Docker API version
Description
arvados-docker-cleaner currently instantiates docker.Client() without any arguments. In this case, the docker module has a hardcoded constant API version that it tries to use. If that version is newer than the server supports, the connection will fail.
Determine the lowest API version that arvados-docker-cleaner can use, and pass that string as a version kwarg to docker.Client(). If that's too difficult to do, or causes other problems, consider also specifying version='auto'—this will use the server's native API version.
Updated by Ward Vandewege over 10 years ago
I'm also seeing this on a fresh Wheezy install with docker 1.8.2 and arvados-docker-cleaner 0.1.20151104051940.
2015-12-04_20:47:31.17790 Starting arvados-docker-cleaner from /etc/sv/arvados-docker-cleaner
2015-12-04_20:47:31.27240 Traceback (most recent call last):
2015-12-04_20:47:31.27241 File "/usr/local/lib/python3.2/dist-packages/docker/client.py", line 138, in _raise_for_status
2015-12-04_20:47:31.27241 response.raise_for_status()
2015-12-04_20:47:31.27241 File "/usr/local/lib/python3.2/dist-packages/requests/models.py", line 837, in raise_for_status
2015-12-04_20:47:31.27241 raise HTTPError(http_error_msg, response=self)
2015-12-04_20:47:31.27242 requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http+docker://localunixsocket/v1.21/images/json?only_ids=0&all=0
2015-12-04_20:47:31.27242
2015-12-04_20:47:31.27242 During handling of the above exception, another exception occurred:
2015-12-04_20:47:31.27242
2015-12-04_20:47:31.27243 Traceback (most recent call last):
2015-12-04_20:47:31.27243 File "/usr/lib/python3.2/runpy.py", line 161, in _run_module_as_main
2015-12-04_20:47:31.27243 "__main__", fname, loader, pkg_name)
2015-12-04_20:47:31.27243 File "/usr/lib/python3.2/runpy.py", line 74, in _run_code
2015-12-04_20:47:31.27243 exec(code, run_globals)
2015-12-04_20:47:31.27244 File "/usr/local/lib/python3.2/dist-packages/arvados_docker/cleaner.py", line 294, in <module>
2015-12-04_20:47:31.27244 main(sys.argv[1:])
2015-12-04_20:47:31.27244 File "/usr/local/lib/python3.2/dist-packages/arvados_docker/cleaner.py", line 291, in main
2015-12-04_20:47:31.27244 run(args, docker.Client())
2015-12-04_20:47:31.27245 File "/usr/local/lib/python3.2/dist-packages/arvados_docker/cleaner.py", line 274, in run
2015-12-04_20:47:31.27246 images = DockerImages.from_daemon(args.quota, docker_client)
2015-12-04_20:47:31.27246 File "/usr/local/lib/python3.2/dist-packages/arvados_docker/cleaner.py", line 57, in from_daemon
2015-12-04_20:47:31.27246 for image in docker_client.images():
2015-12-04_20:47:31.27246 File "/usr/local/lib/python3.2/dist-packages/docker/api/image.py", line 40, in images
2015-12-04_20:47:31.27247 True)
2015-12-04_20:47:31.27247 File "/usr/local/lib/python3.2/dist-packages/docker/client.py", line 146, in _result
2015-12-04_20:47:31.27247 self._raise_for_status(response)
2015-12-04_20:47:31.27247 File "/usr/local/lib/python3.2/dist-packages/docker/client.py", line 142, in _raise_for_status
2015-12-04_20:47:31.27248 raise errors.APIError(e, response, explanation=explanation)
2015-12-04_20:47:31.27248 docker.errors.APIError: 400 Client Error: Bad Request ("b'client is newer than server (client API version: 1.21, server API version: 1.20)'")
2015-12-04_20:47:31.27988 Stopping arvados-docker-cleaner
Updated by Brett Smith over 10 years ago
Declaring the version we know we want is ideal. See what the oldest version(s) supported by current Docker are. If they're old enough to be supported by much-older Docker (like, around 1.3), declare that. Otherwise, declare 'auto'.
Updated by Brett Smith over 10 years ago
- Target version set to Arvados Future Sprints
Updated by Brett Smith over 10 years ago
- Status changed from New to In Progress
- Assigned To set to Brett Smith
- Target version changed from Arvados Future Sprints to 2016-01-06 sprint
Updated by Nico César over 10 years ago
mmmh test are failing-
https://ci.curoverse.com/job/developer-test-job/74/consoleFull
1) Failure: TestCrunchJob#test_fail_clean_tmp [/data/1/jenkins/workspace/developer-test-job/sdk/cli/test/test_crunch-job.rb:94]: Expected /Clean work dirs: exit 1\n$/ to match " 12841 Sanity check is `true`\n 12841 starting: ['true']\n 12841 Sanity check OK\nzzzzz-8i9sb-eyhwnlas72ojxs8 12841 running from /data/1/jenkins/workspace/developer-test-job/sdk/cli/bin/crunch-job with arvados-cli Gem version(s) 0.1.20151207150126\nzzzzz-8i9sb-eyhwnlas72ojxs8 12841 check slurm allocation\nzzzzz-8i9sb-eyhwnlas72ojxs8 12841 node localhost - 2 slots\nzzzzz-8i9sb-eyhwnlas72ojxs8 12841 start\nzzzzz-8i9sb-eyhwnlas72ojxs8 12841 Clean work dirs\nstarting: ['bash','-ec','-o','pipefail','mount -t fuse,fuse.keep | awk \"(index(\\\\$3, \\\\\"$CRUNCH_TMP\\\\\") == 1){print \\\\$3}\" | xargs -r -n 1 fusermount -u -z; sleep 1; rm -rf $JOB_WORK $CRUNCH_INSTALL $CRUNCH_TMP/task $CRUNCH_TMP/src* $CRUNCH_TMP/*.cid']\nFailing mount stub was called\nzzzzz-8i9sb-eyhwnlas72ojxs8 12841 Clean work dirs: exit 1\nclose failed in file object destructor:\nsys.excepthook is missing\nlost sys.stderr\n".
Updated by Brett Smith over 10 years ago
Nico Cesar wrote:
mmmh test are failing-
https://ci.curoverse.com/job/developer-test-job/74/consoleFull
This is caused by a race condition in a Python SDK tool that sometimes causes it to write some extra errors as it exits. It's not related to this change: Docker cleaner doesn't use the SDK at all, and vice versa. I'm going to push accordingly. Thanks.
Updated by Brett Smith over 10 years ago
- Status changed from In Progress to Resolved
- % Done changed from 0 to 100
Applied in changeset arvados|commit:ace5807988dd1db2e8bd63a788fb0f0d9da152d7.