Skip to main content
Glama
error-handling-improvements.md3.19 kB
# Error Handling Improvements Summary This document summarizes the error handling enhancements implemented in the MCP Rewatch codebase. ## Completed Improvements ### 1. Configuration Loading (src/index.ts) - ✅ Added file existence check before reading config - ✅ Validates JSON structure after parsing - ✅ Validates each process configuration - ✅ Provides specific error messages for: - Missing config file (with reference to example) - Invalid JSON syntax - Permission denied errors - Invalid config structure ### 2. Process Spawn Error Handling (src/process-manager.ts) - ✅ Added spawn event listener for immediate success detection - ✅ Handles specific error codes: - `ENOENT`: Command not found - `EACCES`: Permission denied - `ENOTDIR`: Invalid working directory - `EMFILE`: Too many open files - ✅ Improved exit code logging with context ### 3. Tool Input Validation (src/index.ts) - ✅ Added try-catch blocks to all tool handlers - ✅ Validates all input parameters: - Process names (non-empty strings) - Line counts (1-10000 range) - ✅ Checks if processes exist before operations - ✅ Shows available processes when invalid name provided ### 4. Process Termination (src/process-manager.ts) - ✅ Added detailed logging for signal attempts - ✅ Implemented cleanup guard to prevent multiple calls - ✅ Extended timeout to 5 seconds before SIGKILL - ✅ Handles kill failures gracefully - ✅ Logs reason for process stop ### 5. Graceful Shutdown (src/index.ts) - ✅ Added SIGTERM and SIGINT handlers - ✅ Stops all processes before exit - ✅ Differentiates between startup and runtime errors - ✅ Attempts cleanup even on fatal errors - ✅ Specific error messages for: - Lost connection (EPIPE) - Transport failures - General startup errors ### 6. Log Buffer Protection (src/log-buffer.ts) - ✅ Truncates lines over 5000 characters - ✅ Removes multiple lines when over limit - ✅ Error handling for timestamp generation - ✅ Fallback error logging - ✅ Ensures buffer doesn't grow unbounded even in error cases ## Error Message Improvements All error messages now include: - **Context**: What was being attempted - **Specificity**: Exact reason for failure - **Actionability**: What the user can do to fix it - **Available Options**: Lists valid choices when applicable ## Examples of Improved Error Messages ### Before: ``` Failed to load config from rewatch.config.json: Error Process error: spawn failed Error restarting process ``` ### After: ``` Configuration file not found at: /path/to/rewatch.config.json Please create a rewatch.config.json file. See rewatch.config.example.json for reference. Command 'npm' not found. Check if it's installed and in PATH. Error: Process 'frontend' not found. Available processes: backend, database ``` ## Benefits 1. **Better Debugging**: Developers can quickly identify what went wrong 2. **User-Friendly**: Users get clear instructions on how to fix issues 3. **Robust Operation**: System handles edge cases gracefully 4. **Resource Safety**: Prevents memory leaks and resource exhaustion 5. **Clean Shutdown**: Proper cleanup on exit prevents orphaned processes

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brennancheung/mcp-rewatch'

If you have feedback or need assistance with the MCP directory API, please join our Discord server