Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hint user that docker might not be running in renku session commands #3258

Closed
Panaetius opened this issue Jan 11, 2023 · 1 comment · Fixed by #3265
Closed

hint user that docker might not be running in renku session commands #3258

Panaetius opened this issue Jan 11, 2023 · 1 comment · Fixed by #3265
Assignees

Comments

@Panaetius
Copy link
Member

Right now, if the docker service isn't running or there's some issue with it, we just get an error like

Traceback (most recent call last):
  File “[...]/site-packages/urllib3/connectionpool.py”, line 449, in _make_request
    six.raise_from(e, None)
  File “<string>“, line 3, in raise_from
  File “[...]/site-packages/urllib3/connectionpool.py”, line 444, in _make_request
    httplib_response = conn.getresponse()
  File “[...]/http/client.py”, line 1377, in getresponse
    response.begin()
  File “[...]/http/client.py”, line 320, in begin
    version, status, reason = self._read_status()
  File “[...]/http/client.py”, line 281, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
  File “[...]/socket.py”, line 704, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File “[...]/site-packages/requests/adapters.py”, line 440, in send
    resp = conn.urlopen(
  File “[...]/site-packages/urllib3/connectionpool.py”, line 785, in urlopen
    retries = retries.increment(
  File “[...]/site-packages/urllib3/util/retry.py”, line 550, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File “[...]/site-packages/urllib3/packages/six.py”, line 770, in reraise
    raise value
  File “[...]/site-packages/urllib3/connectionpool.py”, line 703, in urlopen
    httplib_response = self._make_request(
  File “[...]/site-packages/urllib3/connectionpool.py”, line 451, in _make_request
    self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
  File “[...]/site-packages/urllib3/connectionpool.py”, line 340, in _raise_timeout
    raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: UnixHTTPConnectionPool(host=‘localhost’, port=None): Read timed out. (read timeout=60)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File “[...]/site-packages/renku/ui/cli/exception_handler.py”, line 133, in main
    return super().main(*args, **kwargs)
  File “[...]/site-packages/renku/ui/cli/exception_handler.py”, line 92, in main
    return super().main(*args, **kwargs)
  File “[...]/site-packages/click/core.py”, line 1055, in main
    rv = self.invoke(ctx)
  File “[...]/site-packages/click/core.py”, line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File “[...]/site-packages/click/core.py”, line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File “[...]/site-packages/click/core.py”, line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File “[...]/site-packages/click/core.py”, line 760, in invoke
    return __callback(*args, **kwargs)
  File “[...]/site-packages/renku/ui/cli/session.py”, line 222, in start
    session_start_command()
  File “[...]/site-packages/renku/command/command_builder/command.py”, line 252, in execute
    output = self._operation(*args, **kwargs)  # type: ignore
  File “pydantic/decorator.py”, line 40, in pydantic.decorator.validate_arguments.validate.wrapper_function
  File “pydantic/decorator.py”, line 134, in pydantic.decorator.ValidatedFunction.call
  File “pydantic/decorator.py”, line 206, in pydantic.decorator.ValidatedFunction.execute
  File “[...]/site-packages/renku/core/session/session.py”, line 118, in session_start
    session_name = provider_api.session_start(
  File “[...]/site-packages/renku/core/session/docker.py”, line 187, in session_start
    container = self.docker_client().containers.run(
  File “[...]/site-packages/docker/models/containers.py”, line 826, in run
    container.start()
  File “[...]/site-packages/docker/models/containers.py”, line 404, in start
    return self.client.api.start(self.id, **kwargs)
  File “[...]/site-packages/docker/utils/decorators.py”, line 19, in wrapped
    return f(self, resource_id, *args, **kwargs)
  File “[...]/site-packages/docker/api/container.py”, line 1108, in start
    res = self._post(url)
  File “[...]/site-packages/docker/utils/decorators.py”, line 46, in inner
    return f(self, *args, **kwargs)
  File “[...]/site-packages/docker/api/client.py”, line 233, in _post
    return self.post(url, **self._set_request_timeout(kwargs))
  File “[...]/site-packages/requests/sessions.py”, line 577, in post
    return self.request(‘POST’, url, data=data, json=json, **kwargs)
  File “[...]/site-packages/requests/sessions.py”, line 529, in request
    resp = self.send(prep, **send_kwargs)
  File “[...]/site-packages/requests/sessions.py”, line 645, in send
    r = adapter.send(request, **kwargs)
  File “[...]/site-packages/requests/adapters.py”, line 532, in send
    raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: UnixHTTPConnectionPool(host=‘localhost’, port=None): Read timed out. (read timeout=60)

Where the localhost connection that fails is to the docker service api.

We should catch this and reraise with a human readable error, along the lines of "Couldn't connect to docker service. Please make sure it is running and up to date"

@Panaetius
Copy link
Member Author

Can be done together with #3264

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
1 participant