debug logging for timers

This commit is contained in:
Nirvana
2026-09-04 09:44:33 +02:00
parent f1043a27c8
commit 4ce22858e4
+42 -1
View File
@@ -13,6 +13,7 @@ PUT /api/providers/<provider>/timers/<client_index>
DELETE /api/providers/<provider>/timers/<client_index>
"""
import json
from bottle import request, response
from streaming_providers.base.models.timer import (
@@ -331,7 +332,47 @@ def setup_timers_routes(app, manager, service):
500 on unexpected errors.
"""
try:
body = request.json
# TEMP DIAGNOSTIC (remove once the Invalid-JSON issue is confirmed
# fixed): request.json swallows the raw bytes on parse failure, so
# we can't tell what actually arrived. Read + log it manually first.
content_type = request.get_header("Content-Type", "")
content_length = request.get_header("Content-Length", "")
raw_body = request.body.read()
logger.info(
f"add_provider_timer[{provider}]: Content-Type={content_type!r} "
f"Content-Length header={content_length!r} actual bytes={len(raw_body)}"
)
logger.info(
f"add_provider_timer[{provider}]: raw body (repr, truncated to 2000 chars)="
f"{raw_body[:2000]!r}"
)
try:
body = json.loads(raw_body.decode("utf-8"))
except UnicodeDecodeError as e:
logger.error(
f"add_provider_timer[{provider}]: body is not valid UTF-8 — "
f"{e} — first 100 bytes hex: {raw_body[:100].hex()}"
)
response.status = 400
return {
"error": "Bad request",
"message": f"Request body is not valid UTF-8: {e}",
"provider": provider,
}
except json.JSONDecodeError as e:
logger.error(
f"add_provider_timer[{provider}]: JSON decode failed at "
f"line {e.lineno} col {e.colno} (char {e.pos}): {e.msg}"
f"context: {raw_body[max(0, e.pos - 30):e.pos + 30]!r}"
)
response.status = 400
return {
"error": "Bad request",
"message": f"Request body must be valid JSON: {e.msg} at position {e.pos}",
"provider": provider,
}
if not body:
response.status = 400
return {