Skip to content

Commit 785b73c

Browse files
author
Lasim
committed
feat(satellite): handle cleanup of removed servers during config changes
1 parent 593a9a7 commit 785b73c

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

services/satellite/src/server.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,39 @@ export async function createServer() {
270270

271271
// Set up configuration change handler for tool discovery
272272
dynamicConfigManager.setConfigurationChangeHandler(async (config, changes) => {
273+
// CLEANUP: Handle removed servers - terminate processes and clear tools
274+
if (changes && changes.removedServers.length > 0) {
275+
for (const serverName of changes.removedServers) {
276+
try {
277+
server.log.info({
278+
operation: 'cleanup_removed_server',
279+
server_name: serverName
280+
}, `Cleaning up removed server: ${serverName}`);
281+
282+
// Remove server completely (handles both active and dormant)
283+
const removed = await processManager.removeServerCompletely(serverName);
284+
285+
// Clear tools from cache
286+
stdioToolDiscoveryManager.clearServerTools(serverName);
287+
288+
server.log.info({
289+
operation: 'cleanup_removed_server_success',
290+
server_name: serverName,
291+
removed_active: removed.active,
292+
removed_dormant: removed.dormant
293+
}, `Server cleanup complete: ${serverName} (active: ${removed.active}, dormant: ${removed.dormant})`);
294+
295+
} catch (error) {
296+
const errorMessage = error instanceof Error ? error.message : String(error);
297+
server.log.error({
298+
operation: 'cleanup_removed_server_failed',
299+
server_name: serverName,
300+
error: errorMessage
301+
}, `Failed to cleanup removed server: ${errorMessage}`);
302+
}
303+
}
304+
}
305+
273306
// Notify HTTP proxy manager of configuration changes
274307
await httpProxyManager.handleConfigurationUpdate(config);
275308

0 commit comments

Comments
 (0)