Page MenuHomePhabricator

`webservice restart` fails for k8s service if an interactive pod is also open
Closed, DuplicatePublic

Description

$ webservice restart
Restarting webserviceTraceback (most recent call last):
  File "/usr/local/bin/webservice", line 152, in <module>
    start(job, '')
  File "/usr/local/bin/webservice", line 34, in start
    wait_for(lambda: job.get_state() == Backend.STATE_RUNNING, message)
  File "/usr/lib/python2.7/dist-packages/toollabs/common/utils.py", line 20, in wait_for
    if predicate():
  File "/usr/local/bin/webservice", line 34, in <lambda>
    wait_for(lambda: job.get_state() == Backend.STATE_RUNNING, message)
  File "/usr/lib/python2.7/dist-packages/toollabs/webservice/backends/kubernetesbackend.py", line 369, in get_state
    pod = self._find_obj(pykube.Pod, self.webservice_label_selector)
  File "/usr/lib/python2.7/dist-packages/toollabs/webservice/backends/kubernetesbackend.py", line 185, in _find_obj
    selector=selector
  File "/usr/lib/python2.7/dist-packages/pykube/query.py", line 75, in get
    raise ValueError("get() more than one object; use filter")
ValueError: get() more than one object; use filter
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 145, in apport_excepthook
    os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o640), 'wb') as f:
OSError: [Errno 2] No such file or directory: '/var/crash/_usr_bin_webservice.53276.crash'

Original exception was:
Traceback (most recent call last):
  File "/usr/local/bin/webservice", line 152, in <module>
    start(job, '')
  File "/usr/local/bin/webservice", line 34, in start
    wait_for(lambda: job.get_state() == Backend.STATE_RUNNING, message)
  File "/usr/lib/python2.7/dist-packages/toollabs/common/utils.py", line 20, in wait_for
    if predicate():
  File "/usr/local/bin/webservice", line 34, in <lambda>
    wait_for(lambda: job.get_state() == Backend.STATE_RUNNING, message)
  File "/usr/lib/python2.7/dist-packages/toollabs/webservice/backends/kubernetesbackend.py", line 369, in get_state
    pod = self._find_obj(pykube.Pod, self.webservice_label_selector)
  File "/usr/lib/python2.7/dist-packages/toollabs/webservice/backends/kubernetesbackend.py", line 185, in _find_obj
    selector=selector
  File "/usr/lib/python2.7/dist-packages/pykube/query.py", line 75, in get
    raise ValueError("get() more than one object; use filter")
ValueError: get() more than one object; use filter
$ kubectl get pods
NAME                             READY     STATUS    RESTARTS   AGE
interactive                      1/1       Running   4          22h
precise-tools-1356590604-5wp0r   1/1       Running   0          1m

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

It looks like it actually did restart the pod. Does it just fail when trying to check to see if the restart worked?