forked from HomeLab/unraid-mcp
fix: address 5 critical and major PR review issues
- Remove set -e from validate-marketplace.sh to prevent early exit on check failures, allowing the summary to always be displayed (PRRT_kwDOO6Hdxs5uvKrc) - Fix marketplace.json source path to point to skills/unraid instead of ./ for correct plugin directory resolution (PRRT_kwDOO6Hdxs5uvKrg) - Fix misleading trap registration comment in unraid-api-crawl.md and add auth note to Apollo Studio URL (PRRT_kwDOO6Hdxs5uvO2t) - Extract duplicated cleanup-with-error-handling in main.py into _run_shutdown_cleanup() helper (PRRT_kwDOO6Hdxs5uvO3A) - Add input validation to read-logs.sh to prevent GraphQL injection via LOG_NAME and LINES parameters (PRRT_kwDOO6Hdxs5uvKrj)
This commit is contained in:
@@ -19,6 +19,18 @@ async def shutdown_cleanup() -> None:
|
||||
print(f"Error during cleanup: {e}")
|
||||
|
||||
|
||||
def _run_shutdown_cleanup() -> None:
|
||||
"""Run shutdown cleanup, suppressing expected event loop errors."""
|
||||
try:
|
||||
asyncio.run(shutdown_cleanup())
|
||||
except RuntimeError as e:
|
||||
msg = str(e).lower()
|
||||
if "event loop is closed" in msg or "no running event loop" in msg:
|
||||
pass # Expected during shutdown
|
||||
else:
|
||||
print(f"WARNING: Unexpected error during cleanup: {e}", file=sys.stderr)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Main entry point for the Unraid MCP Server."""
|
||||
try:
|
||||
@@ -27,28 +39,10 @@ def main() -> None:
|
||||
run_server()
|
||||
except KeyboardInterrupt:
|
||||
print("\nServer stopped by user")
|
||||
try:
|
||||
asyncio.run(shutdown_cleanup())
|
||||
except RuntimeError as e:
|
||||
if (
|
||||
"event loop is closed" in str(e).lower()
|
||||
or "no running event loop" in str(e).lower()
|
||||
):
|
||||
pass # Expected during shutdown
|
||||
else:
|
||||
print(f"WARNING: Unexpected error during cleanup: {e}", file=sys.stderr)
|
||||
_run_shutdown_cleanup()
|
||||
except Exception as e:
|
||||
print(f"Server failed to start: {e}")
|
||||
try:
|
||||
asyncio.run(shutdown_cleanup())
|
||||
except RuntimeError as e:
|
||||
if (
|
||||
"event loop is closed" in str(e).lower()
|
||||
or "no running event loop" in str(e).lower()
|
||||
):
|
||||
pass # Expected during shutdown
|
||||
else:
|
||||
print(f"WARNING: Unexpected error during cleanup: {e}", file=sys.stderr)
|
||||
_run_shutdown_cleanup()
|
||||
raise
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user