清理本地遗留生成Worker
启动本地 all 角色前清理同库旧 external-generation-worker 补充 dev 调度脚本的 worker 匹配测试 记录旧 worker 抢队列导致 procedure 超时的排障口径
This commit is contained in:
@@ -16,7 +16,9 @@ import {
|
||||
DevRunner,
|
||||
isDirectModuleExecution,
|
||||
isSpacetimePublishPermissionError,
|
||||
isStaleExternalGenerationWorkerProcess,
|
||||
normalizeCargoVersionRequirement,
|
||||
parseProcessEnvBlock,
|
||||
parseArgs,
|
||||
parseSpacetimeToolVersion,
|
||||
resolveDevStackStatePath,
|
||||
@@ -282,6 +284,67 @@ describe('dev scheduler api-server env', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('dev scheduler local worker cleanup', () => {
|
||||
const expected = {
|
||||
expectedDatabase: 'xushi-p4wfr',
|
||||
expectedExePath: '/repo/Genarrative/server-rs/target/debug/api-server',
|
||||
expectedRepoRoot: '/repo/Genarrative',
|
||||
expectedSpacetimeServer: 'http://127.0.0.1:10002',
|
||||
};
|
||||
|
||||
test('解析 /proc environ 的 NUL 分隔格式', () => {
|
||||
expect(parseProcessEnvBlock('A=1\0B=two=parts\0\0')).toEqual({
|
||||
A: '1',
|
||||
B: 'two=parts',
|
||||
});
|
||||
});
|
||||
|
||||
test('识别同仓库同库的旧 external-generation-worker', () => {
|
||||
expect(
|
||||
isStaleExternalGenerationWorkerProcess({
|
||||
...expected,
|
||||
cwd: '/repo/Genarrative',
|
||||
env: {
|
||||
GENARRATIVE_PROCESS_ROLE: 'external-generation-worker',
|
||||
GENARRATIVE_SPACETIME_DATABASE: 'xushi-p4wfr',
|
||||
GENARRATIVE_SPACETIME_SERVER_URL: 'http://127.0.0.1:10002',
|
||||
},
|
||||
exe: '/repo/Genarrative/server-rs/target/debug/api-server (deleted)',
|
||||
pid: 12345,
|
||||
}),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
test('不同数据库或仓库的 worker 不会被当成本地旧进程', () => {
|
||||
expect(
|
||||
isStaleExternalGenerationWorkerProcess({
|
||||
...expected,
|
||||
cwd: '/repo/Genarrative',
|
||||
env: {
|
||||
GENARRATIVE_PROCESS_ROLE: 'external-generation-worker',
|
||||
GENARRATIVE_SPACETIME_DATABASE: 'other-db',
|
||||
GENARRATIVE_SPACETIME_SERVER_URL: 'http://127.0.0.1:10002',
|
||||
},
|
||||
exe: '/repo/Genarrative/server-rs/target/debug/api-server',
|
||||
pid: 12345,
|
||||
}),
|
||||
).toBe(false);
|
||||
expect(
|
||||
isStaleExternalGenerationWorkerProcess({
|
||||
...expected,
|
||||
cwd: '/repo/Other',
|
||||
env: {
|
||||
GENARRATIVE_PROCESS_ROLE: 'external-generation-worker',
|
||||
GENARRATIVE_SPACETIME_DATABASE: 'xushi-p4wfr',
|
||||
GENARRATIVE_SPACETIME_SERVER_URL: 'http://127.0.0.1:10002',
|
||||
},
|
||||
exe: '/repo/Other/server-rs/target/debug/api-server',
|
||||
pid: 12345,
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('dev scheduler Rust build env', () => {
|
||||
test('local dev Rust env bypasses project sccache wrapper', () => {
|
||||
const env = buildLocalRustProcessEnv(
|
||||
|
||||
Reference in New Issue
Block a user