fix: address review-work round 2 findings
- MCP teardown race: add shutdownGeneration counter to prevent in-flight connections from resurrecting after disconnectAll - MCP multi-key disconnect race: replace disconnectedSessions Set with generation-based Map to track per-session disconnect events - MCP clients: check shutdownGeneration in stdio/http client creators before inserting into state.clients - BackgroundManager: call clearTaskHistoryWhenParentTasksGone after timer-based task removal in scheduleTaskRemoval and notifyParentSession - BackgroundManager: clean completedTaskSummaries when parent has no remaining tasks - Plugin dispose: remove duplicate tmuxSessionManager.cleanup call since BackgroundManager.shutdown already handles it via onShutdown
This commit is contained in:
@@ -7,12 +7,9 @@ export function createPluginDispose(args: {
|
||||
skillMcpManager: {
|
||||
disconnectAll: () => Promise<void>
|
||||
}
|
||||
tmuxSessionManager: {
|
||||
cleanup: () => Promise<void>
|
||||
}
|
||||
disposeHooks: () => void
|
||||
}): PluginDispose {
|
||||
const { backgroundManager, skillMcpManager, tmuxSessionManager, disposeHooks } = args
|
||||
const { backgroundManager, skillMcpManager, disposeHooks } = args
|
||||
let disposePromise: Promise<void> | null = null
|
||||
|
||||
return async (): Promise<void> => {
|
||||
@@ -23,10 +20,7 @@ export function createPluginDispose(args: {
|
||||
|
||||
disposePromise = (async (): Promise<void> => {
|
||||
backgroundManager.shutdown()
|
||||
await Promise.all([
|
||||
skillMcpManager.disconnectAll(),
|
||||
tmuxSessionManager.cleanup(),
|
||||
])
|
||||
await skillMcpManager.disconnectAll()
|
||||
disposeHooks()
|
||||
})()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user