Improve k8s watcher error handling
This commit is contained in:
parent
3dbc251b94
commit
f2f9a73ccd
2 changed files with 11 additions and 11 deletions
|
|
@ -143,8 +143,6 @@ class Controller:
|
||||||
await build.cleanup()
|
await build.cleanup()
|
||||||
elif event_type == "DELETED":
|
elif event_type == "DELETED":
|
||||||
should_wakeup = self.db.remove(build_name)
|
should_wakeup = self.db.remove(build_name)
|
||||||
else:
|
|
||||||
_logger.error(f"Unexpected k8s event type {event_type}.")
|
|
||||||
if should_wakeup:
|
if should_wakeup:
|
||||||
self._wakeup()
|
self._wakeup()
|
||||||
|
|
||||||
|
|
@ -194,8 +192,6 @@ class Controller:
|
||||||
await build.on_cleanup_failed()
|
await build.on_cleanup_failed()
|
||||||
elif event_type == "DELETED":
|
elif event_type == "DELETED":
|
||||||
pass
|
pass
|
||||||
else:
|
|
||||||
_logger.error(f"Unexpected k8s event type {event_type}.")
|
|
||||||
|
|
||||||
async def initializer(self) -> None:
|
async def initializer(self) -> None:
|
||||||
while True:
|
while True:
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,7 @@ def _watch(list_method, *args, **kwargs):
|
||||||
# perform a first query
|
# perform a first query
|
||||||
res = list_method(*args, **kwargs)
|
res = list_method(*args, **kwargs)
|
||||||
resource_version = res.metadata.resource_version
|
resource_version = res.metadata.resource_version
|
||||||
|
assert resource_version
|
||||||
for item in res.items:
|
for item in res.items:
|
||||||
yield None, item
|
yield None, item
|
||||||
# stream until timeout
|
# stream until timeout
|
||||||
|
|
@ -91,13 +92,16 @@ def _watch(list_method, *args, **kwargs):
|
||||||
resource_version=resource_version,
|
resource_version=resource_version,
|
||||||
_request_timeout=60,
|
_request_timeout=60,
|
||||||
):
|
):
|
||||||
if event["type"] == "ERROR":
|
event_type = event["type"]
|
||||||
raise RuntimeError("Kubernetes watch error")
|
event_object = event["object"]
|
||||||
resource_version = event["object"].metadata.resource_version
|
if event_type == "ERROR":
|
||||||
yield event["type"], event["object"]
|
raise RuntimeError("Kubernetes watch ERROR")
|
||||||
except urllib3.exceptions.TimeoutError:
|
elif event_type not in ("ADDED", "MODIFIED", "DELETED"):
|
||||||
continue
|
raise RuntimeError(f"Unexpected event {event_type}")
|
||||||
except TimeoutError:
|
resource_version = event_object.metadata.resource_version
|
||||||
|
assert resource_version
|
||||||
|
yield event_type, event_object
|
||||||
|
except (urllib3.exceptions.TimeoutError, TimeoutError):
|
||||||
continue
|
continue
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
delay = 5
|
delay = 5
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue