Skip to main content
Glama

DollhouseMCP

by DollhouseMCP
SESSION_INIT_FIX_610_COMPLETE.md3.03 kB
# Session Complete - Fix #610 Initialization Race Condition **Date**: August 16, 2025 **Time**: ~6:00 PM EST **Branch**: fix/server-initialization-race-condition **PR**: #611 - https://github.com/DollhouseMCP/mcp-server/pull/611 ## What Was Accomplished ✅ Successfully fixed the server initialization race condition that was blocking PR #606 and causing Docker test failures. ### The Problem - Server constructor had async initialization with `.then()` - `run()` method connected immediately without waiting - MCP was ready but portfolio/personas weren't loaded - Commands would fail or hang ### The Solution Moved initialization to `run()` method with proper sequencing: 1. Created `completeInitialization()` method for post-init logic 2. Modified constructor to only do basic setup (no async) 3. Modified `run()` to await initialization before connecting ### Code Changes ```typescript // Before (race condition): constructor() { this.initializePortfolio().then(() => { // Async initialization }); } async run() { await this.server.connect(transport); // Connected immediately! } // After (fixed): constructor() { // Only basic setup, no async } async run() { await this.initializePortfolio(); // Wait for portfolio await this.completeInitialization(); // Complete setup await this.server.connect(transport); // Then connect } ``` ## Testing Results ### Local MCP ✅ ```bash echo '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"1.0.0","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}},"id":1}' | node dist/index.js 2>/dev/null # Result: Server responds correctly! {"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"dollhousemcp","version":"1.0.0"}},"jsonrpc":"2.0","id":1} ``` ### Test Suite - 1699/1740 tests passing - 2 failures in rate limiting tests (unrelated to this fix) ## Files Changed - `src/index.ts`: Moved initialization logic (lines 157-222) - Added documentation files for tracking ## Impact ### Immediate - ✅ PR #611 created and ready for review - ✅ MCP commands work reliably - ✅ Server initialization is properly sequenced ### Unblocked Work - PR #606 (search index) can now proceed - Docker tests should work normally - Future refactoring of index.ts documented ## Key Learning The race condition was a legacy pattern from the personas-only days. When portfolio was added, the initialization became async but the connection pattern wasn't updated. This fix ensures proper sequencing: **Initialize → Complete → Connect** ## Next Steps 1. **Wait for PR #611 review/merge** 2. **After merge**: PR #606 can rebase on develop 3. **Consider**: Extract initialization logic as part of Issue #512 ## Commands for Follow-up ```bash # Check PR status gh pr view 611 # After merge, update PR #606 git checkout feature/search-index-implementation git pull origin develop git rebase develop ``` --- *Session completed successfully - initialization race condition fixed!*

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/DollhouseMCP/DollhouseMCP'

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