diff --git a/light9/collector/service.py b/light9/collector/service.py --- a/light9/collector/service.py +++ b/light9/collector/service.py @@ -22,6 +22,7 @@ from prometheus_client import Summary from rdfdb.syncedgraph.syncedgraph import SyncedGraph from starlette.applications import Starlette from starlette.endpoints import WebSocketEndpoint +from starlette.requests import ClientDisconnect from starlette.responses import Response from starlette.routing import Route, WebSocketRoute from starlette.types import Receive, Scope, Send @@ -57,7 +58,12 @@ class Updates(WebSocketEndpoint, UiListe async def PutAttrs(collector: Collector, request): with STAT_SETATTR.time(): - client, clientSession, settings, sendTime = parseJsonMessage(collector.graph, await request.body()) + try: + body = await request.body() + except ClientDisconnect: + log.warning("PUT /attrs request disconnected- ignoring") + return Response('', status_code=400) + client, clientSession, settings, sendTime = parseJsonMessage(collector.graph, body) collector.setAttrs(client, clientSession, settings, sendTime) return Response('', status_code=202)