fix(gateway): guard traced channel handoff stops · openclaw/openclaw@536c009
vincentkoc
·
2026-05-30
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -979,17 +979,28 @@ describe("server-channels auto restart", () => {
|
979 | 979 | }); |
980 | 980 | |
981 | 981 | it("does not start traced channel accounts after stop wins the handoff", async () => { |
| 982 | +const handoffEntered = createDeferred(); |
| 983 | +const releaseHandoff = createDeferred(); |
982 | 984 | const startupTrace = { |
983 | | -measure: async <T>(_name: string, run: () => T | Promise<T>) => await run(), |
| 985 | +measure: async <T>(name: string, run: () => T | Promise<T>) => { |
| 986 | +if (name === "channels.discord.start-account-handoff") { |
| 987 | +handoffEntered.resolve(); |
| 988 | +await releaseHandoff.promise; |
| 989 | +} |
| 990 | +return await run(); |
| 991 | +}, |
984 | 992 | }; |
985 | 993 | const startAccount = vi.fn(async () => {}); |
986 | 994 | |
987 | 995 | installTestRegistry(createTestPlugin({ startAccount })); |
988 | 996 | const manager = createManager({ startupTrace }); |
989 | 997 | |
990 | 998 | await manager.startChannel("discord", DEFAULT_ACCOUNT_ID); |
991 | | -const stopTask = manager.stopChannel("discord", DEFAULT_ACCOUNT_ID); |
992 | 999 | await vi.advanceTimersByTimeAsync(0); |
| 1000 | +await handoffEntered.promise; |
| 1001 | +const stopTask = manager.stopChannel("discord", DEFAULT_ACCOUNT_ID); |
| 1002 | +await flushMicrotasks(); |
| 1003 | +releaseHandoff.resolve(); |
993 | 1004 | await stopTask; |
994 | 1005 | await flushMicrotasks(); |
995 | 1006 | |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。