debug: add stderr logging to _poll_task for every status poll attempt

Logs [poll] lines to stderr so Claude Desktop's MCP log shows exactly
what DSM returns on each status call: attempt number, elapsed time,
finished flag, data keys (on success) or error code + message (on 599).

Version 0.2.3 — remove this logging once the 599 root cause is confirmed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-14 13:05:37 +02:00
parent e3fa71b458
commit c0d4c347c5
3 changed files with 22 additions and 2 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[project]
name = "mcp-synology-filestation"
version = "0.2.2"
version = "0.2.3"
description = "MCP server for Synology FileStation"
requires-python = ">=3.12"
dependencies = [
+1 -1
View File
@@ -1,3 +1,3 @@
"""MCP server for Synology FileStation."""
__version__ = "0.2.2"
__version__ = "0.2.3"
@@ -81,17 +81,26 @@ def register_filestation(
``(True, status_dict)`` on success, or ``(False, "Error: …")`` on
DSM error or timeout.
"""
import sys as _sys
from mcp_synology_filestation.client import SynologyError as _SynologyError
delay = 0.2
elapsed = initial_delay
timeout = 60.0
consecutive_599 = 0
attempt = 0
_sys.stderr.write(
f"[poll] START {api}/status v{version} taskid={taskid} initial_delay={initial_delay}\n"
)
_sys.stderr.flush()
if initial_delay > 0:
await asyncio.sleep(initial_delay)
while True:
attempt += 1
try:
status_data = await client.request(
api,
@@ -100,7 +109,18 @@ def register_filestation(
params={"taskid": taskid},
)
consecutive_599 = 0
finished = status_data.get("finished")
_sys.stderr.write(
f"[poll] #{attempt} elapsed={elapsed:.2f}s finished={finished}"
f" data_keys={list(status_data.keys())}\n"
)
_sys.stderr.flush()
except _SynologyError as e:
_sys.stderr.write(
f"[poll] #{attempt} elapsed={elapsed:.2f}s"
f" SynologyError code={e.code} msg={e}\n"
)
_sys.stderr.flush()
if e.code == 599:
# 599 can be transient (task just started, not yet available).
# Retry up to 5 times before giving up.