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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user