MAESTRO: Expand startup orphan cleanup to target mcp-server and worker-service processes
The startup cleanupOrphanedProcesses() only targeted chroma-mcp, leaving orphaned mcp-server.cjs and worker-service.cjs processes undetected after daemon crashes. Expanded to target all claude-mem process types with 30-minute age filtering and current PID exclusion. Closes PR #687 (which had a spawnDaemon regression removing Windows WMIC support). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
readPidFile,
|
||||
removePidFile,
|
||||
getPlatformTimeout,
|
||||
parseElapsedTime,
|
||||
type PidInfo
|
||||
} from '../../src/services/infrastructure/index.js';
|
||||
|
||||
@@ -134,6 +135,32 @@ describe('ProcessManager', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('parseElapsedTime', () => {
|
||||
it('should parse MM:SS format', () => {
|
||||
expect(parseElapsedTime('05:30')).toBe(5);
|
||||
expect(parseElapsedTime('00:45')).toBe(0);
|
||||
expect(parseElapsedTime('59:59')).toBe(59);
|
||||
});
|
||||
|
||||
it('should parse HH:MM:SS format', () => {
|
||||
expect(parseElapsedTime('01:30:00')).toBe(90);
|
||||
expect(parseElapsedTime('02:15:30')).toBe(135);
|
||||
expect(parseElapsedTime('00:05:00')).toBe(5);
|
||||
});
|
||||
|
||||
it('should parse DD-HH:MM:SS format', () => {
|
||||
expect(parseElapsedTime('1-00:00:00')).toBe(1440); // 1 day
|
||||
expect(parseElapsedTime('2-12:30:00')).toBe(3630); // 2 days + 12.5 hours
|
||||
expect(parseElapsedTime('0-01:00:00')).toBe(60); // 1 hour
|
||||
});
|
||||
|
||||
it('should return -1 for empty or invalid input', () => {
|
||||
expect(parseElapsedTime('')).toBe(-1);
|
||||
expect(parseElapsedTime(' ')).toBe(-1);
|
||||
expect(parseElapsedTime('invalid')).toBe(-1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('getPlatformTimeout', () => {
|
||||
const originalPlatform = process.platform;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user