补记spacetime-client重复副本文件的排障经验
- 记录 active.rs 用 path 属性指定真实模块、同名副本不参与编译的现象与原因 - 给出改动前先查 path 属性、只改 active 目录、用编译双绿确认的处理口径
This commit is contained in:
@@ -5710,3 +5710,11 @@ Cocos Creator 根目录由 `package.json.creator.version` 与普通 `assets/`
|
||||
- **处理(现行口径)**:① 依赖里只放数据,回调走 ref(`openActiveProjectRef`)——effect 不再因回调换身份而重跑;② `useDirectActiveTurns` 轮询只在快照内容变化时才 `setActiveTurns`(并给空态做引用稳定),避免每 5 秒换一次数组身份去带动下游 effect;③ `WindowChrome` 的 context value 用 `useMemo` 收口。判断类问题的通行判据:**凡是把"每次渲染新生成的函数/对象"写进 effect 依赖的,一律视为 bug**。
|
||||
- **验证**:修复后同一台机器、同一路径下 35 秒内新增 `Maximum update depth` **0 条**,renderer 工作集 **254 MB**(修复前 4.2–4.4 GB);`apps/ai-game-creator-shell/tests/directActiveTurns.test.tsx` 断言轮询返回值不变时快照引用不变。
|
||||
- **关联**:`apps/ai-game-creator-shell/src/features/app-shell/WorkspaceLauncher.tsx`、`apps/ai-game-creator-shell/src/features/agent-runtime/directActiveTurns.ts`、`apps/ai-game-creator-shell/src/components/WindowChrome.tsx`、`apps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts`。
|
||||
|
||||
## 2026-09-21 改了 `spacetime-client` 的同名文件却不生效:未参与编译的重复副本
|
||||
|
||||
- **现象**:给 `spacetime-client` 的 external generation facade 新增方法(`set_external_generation_job_provider_checkpoint`)后,`cargo check -p spacetime-client` 通过,但在同一文件里继续加注释、改签名都对调用方没有任何影响,直到 api-server 侧报「方法不存在」才发现改动落在了一份死文件上。
|
||||
- **原因**:`src/active.rs` 用 `#[path = "active/<name>.rs"] pub mod <name>;` 显式指定真实模块路径,`src/<name>.rs` 里另有一份同名副本并不参与编译。`rg "fn <名字>"` 会同时命中两份,肉眼很容易以为改对了。
|
||||
- **处理(现行口径)**:改 `spacetime-client` 的模块前先 `rg -n '#\\[path = "active/' server-rs/crates/spacetime-client/src/active.rs` 确认该模块的真实文件;只有 `active/` 下的文件参与编译。历史死副本 `src/external_generation.rs` 已在 `ac08ccbe3` 删除,不要再以「两边都改一遍」的方式维持同步。
|
||||
- **验证**:`cargo check -p spacetime-client` 与 `cargo check -p api-server` 同时通过,且 `rg --files server-rs/crates/spacetime-client/src` 中同名文件只剩一份。
|
||||
- **关联**:`server-rs/crates/spacetime-client/src/active.rs`、`server-rs/crates/spacetime-client/src/active/external_generation.rs`、`server-rs/crates/spacetime-client/src/active/mapper.rs`。
|
||||
|
||||
Reference in New Issue
Block a user