feat(all): 数据库模块化拆分与版本化迁移、任务引擎命名体系收敛、物理输出校验加固与用户配置接通
- server/db: 拆 4929 行 db.rs 单体为 db/ 目录,migrations.rs 引入 PRAGMA user_version
版本化迁移运行器(M1~M13)
- 任务引擎 Phase 6/7b/7c 改名收敛:EngineStageConfig→PhaseConfig、StagePolicy→ResumePolicy、
Converged→Completed、删除 task_type 列、success_method 拆 tlusty_/synspec_ 双列、
新增 tlusty_status/synspec_status 半失败阶段守卫
- 科学正确性加固:conv_check 任意行 NaN/Inf/溢出判无效(0 行容忍)、新增 spec_is_valid
校验 SYNSPEC 脏谱、itek_history 逐次迭代全量保真、fmt_abn powf 溢出饱和
- 用户配置真正接通:tlusty_chain/tlusty_input 由死字段经 调度器→TaskSpec→executor→runner
透传生效;config 加载期 validate + deny_unknown_fields + 解析失败记 warn
- 调度修复:H1 活锁(pending_strategies 跳过已失败策略)、种子查找错误不再静默降级冷启动
- dashboard: 阶段配置面板 tlusty_stage/synspec_stage、"已完成"标签、迭代诊断展示
- docs: 新增 database_refactor_design.md,同步 database/api/PIPELINE/workflow_detail
This commit is contained in:
@@ -117,6 +117,41 @@ test('triggerNow() 立即触发一次并续排', async () => {
|
||||
stub.restore();
|
||||
});
|
||||
|
||||
test('triggerNow() 与在途 schedule 不并发执行 fn(inFlight 守卫)', async () => {
|
||||
const stub = installDocStub();
|
||||
const timers = captureTimers();
|
||||
let active = 0; // 当前正在执行的 fn 数(应恒 ≤1)
|
||||
let maxActive = 0;
|
||||
let calls = 0;
|
||||
// fn 是慢异步:用 gate 控制其完成时机,确保 triggerNow 落在它在途时。
|
||||
let resolveFn = null;
|
||||
const fn = () => {
|
||||
active++;
|
||||
maxActive = Math.max(maxActive, active);
|
||||
calls++;
|
||||
return new Promise((resolve) => { resolveFn = resolve; });
|
||||
};
|
||||
const p = createPoller(fn, { baseMs: 5000 });
|
||||
const startP = p.start(); // 触发首次 schedule(fn 在途,停在 await)
|
||||
// 让 start 的 schedule 进入 fn()——通过一次微任务边界。
|
||||
await Promise.resolve();
|
||||
await Promise.resolve();
|
||||
// 此时 fn 在途(calls=1,active=1)。triggerNow 应受 inFlight 守卫直接 return,
|
||||
// 不再起一个新的 schedule 并发跑 fn。
|
||||
const triggerP = p.triggerNow();
|
||||
await Promise.resolve();
|
||||
await Promise.resolve();
|
||||
// 完成 fn(在途的 schedule 才会推进)。
|
||||
resolveFn(true);
|
||||
await Promise.all([startP, triggerP]);
|
||||
active = 0; // fn 已完成
|
||||
assert.equal(calls, 1, 'triggerNow 不得并发触发第二次 fn(inFlight 守卫)');
|
||||
assert.equal(maxActive, 1, 'fn 不得并发执行(maxActive 应为 1)');
|
||||
p.stop();
|
||||
timers.restore();
|
||||
stub.restore();
|
||||
});
|
||||
|
||||
test('退避上限 maxMs 生效(长时间连续失败不无限增长)', async () => {
|
||||
const stub = installDocStub();
|
||||
const timers = captureTimers();
|
||||
|
||||
Reference in New Issue
Block a user