lhk229
e5fb51d1a7
Project CI / Backend tests (pull_request) Failing after 11s
Project CI / Repository checks (pull_request) Failing after 11s
Project CI / Frontend tests (pull_request) Failing after 19s
Project CI / Native shell tests (pull_request) Successful in 9m50s
完美像素归属校验单次取数并纳入处理预算
合法 assetId 且不带 sourceResourceId 时,取得端点准入许可后到 OSS 下载之间会
顺序执行 8 次 SpacetimeDB 调用,全是裸 await,第一次真正应用 30 秒预算的是下载。
其中 list_editor_projects + get_editor_asset_library 这对全账号扫描重复了三轮:
resolve_editor_reference_object_key_for_owner 内部两个子函数各扫一轮,
resolve_editor_pixel_art_source_for_owner 再扫第三轮,拉的是同一份数据。
预算从 handler 入口「起算」不等于「覆盖」。deadline 是绝对时刻,早起算只让后续
余额更少;中间不检查就不会在该阶段返回 504,请求会一路走到下载才失败并返回下载
相关文案,误导排障,同时准入许可全程被这些无界调用占用,把并发闸自身变成瓶颈。
去重参照抠图入口 resolve_editor_background_removal_source 的既有范式:扫一次,
注册 ID 解析、归属校验和跨记录 assetKind 收集全部交给 _from_records 纯函数在内存
里完成。归属校验命中已登记记录即短路,只有两份记录都查不到才回落点查。老包装
resolve_editor_reference_object_key_for_owner 保持不动,它服务的是没有任何上下文
的调用方。全账号 RPC 由 6 次降为 2 次,整段由 8 次降为 3 次。
预算侧把 get_editor_project 到来源解析结束整体包进 timeout_at,超时返回 504 且
文案指向归属校验。不重复写 Instant::now() 预检——紧邻的 permit 获取已做过,且本块
首个 await 是网络 IO 不会立即就绪,不构成 timeout_at 先 poll 再判超时的陷阱。
参照 937378ab9 用 assert_function_occurrence_count 把两处全账号扫描各钉为 1 次,
并禁止该函数重新调用取数包装。后者断言调用形式而非裸函数名,否则会命中生产代码里
说明「老包装保持不动」的注释——该陷阱在编写时即由测试抓出。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-01 11:07:01 +00:00
..
2026-06-25 20:10:18 +08:00
2026-06-07 22:20:58 +08:00
2026-05-28 15:42:46 +08:00
2026-07-31 11:30:48 +08:00
2026-06-30 19:33:37 +08:00
2026-07-30 11:42:45 +00:00
2026-07-27 18:28:26 +08:00
2026-07-27 18:28:26 +08:00
2026-06-03 22:21:00 +08:00
2026-07-31 16:40:43 +08:00
2026-07-23 14:52:57 +08:00
2026-07-28 16:20:43 +08:00
2026-07-28 16:20:43 +08:00
2026-07-31 16:40:43 +08:00
2026-07-03 15:19:44 +08:00
2026-06-09 15:36:58 +08:00
2026-07-18 21:17:35 +08:00
2026-05-17 20:52:15 +08:00
2026-07-30 11:42:45 +00:00
2026-07-10 18:28:06 +08:00
2026-07-22 18:25:52 +08:00
2026-07-15 21:06:05 +08:00
2026-06-05 23:41:24 +08:00
2026-07-23 14:52:57 +08:00
2026-05-15 08:43:21 +08:00
2026-06-30 20:58:33 +08:00
2026-07-18 22:02:22 +08:00
2026-07-18 22:02:22 +08:00
2026-06-11 15:55:23 +08:00
2026-07-23 18:06:29 +08:00
2026-04-28 19:36:39 +08:00
2026-06-30 19:33:37 +08:00
2026-06-25 20:10:18 +08:00
2026-07-31 16:40:43 +08:00
2026-07-17 22:07:52 +08:00
2026-07-23 18:06:29 +08:00
2026-04-28 10:57:40 +08:00
2026-04-26 18:06:23 +08:00
2026-04-26 18:06:23 +08:00
2026-07-23 14:52:57 +08:00
2026-07-27 18:28:26 +08:00
2026-07-08 11:26:41 +08:00
2026-05-08 11:44:42 +08:00
2026-06-19 10:47:56 +08:00
2026-06-30 19:33:37 +08:00
2026-04-27 14:23:19 +08:00
2026-06-30 19:33:37 +08:00
2026-07-15 21:06:05 +08:00
2026-07-27 18:28:26 +08:00
2026-04-26 18:06:23 +08:00
2026-07-15 21:06:05 +08:00
2026-06-08 21:05:37 +08:00
2026-07-10 18:28:06 +08:00
2026-07-17 21:03:15 +08:00
2026-07-31 13:40:28 +08:00
2026-08-01 11:07:01 +00:00
2026-07-27 18:28:26 +08:00
2026-07-15 21:06:05 +08:00
2026-05-14 14:56:36 +08:00
2026-07-20 20:57:34 +08:00
2026-04-26 18:06:23 +08:00
2026-07-23 18:06:29 +08:00
2026-06-19 15:31:53 +08:00
2026-06-21 13:40:09 +08:00
2026-07-10 18:28:06 +08:00
2026-07-31 16:40:43 +08:00
2026-07-08 22:16:51 +08:00
2026-07-31 16:40:43 +08:00
2026-07-31 16:40:43 +08:00
2026-07-08 11:26:41 +08:00
2026-07-17 22:07:52 +08:00
2026-06-07 22:20:58 +08:00
2026-06-10 11:35:39 +08:00
2026-06-04 22:32:46 +08:00
2026-05-26 13:18:13 +08:00
2026-07-04 12:03:58 +08:00
2026-07-20 20:57:34 +08:00
2026-07-17 22:07:52 +08:00
2026-07-12 02:32:22 +08:00
2026-07-15 21:06:05 +08:00
2026-06-30 20:58:33 +08:00
2026-06-30 20:58:33 +08:00
2026-07-23 18:06:29 +08:00
2026-06-30 19:33:37 +08:00
2026-07-17 22:07:52 +08:00
2026-07-21 17:06:39 +08:00
2026-07-23 14:52:57 +08:00
2026-07-23 14:52:57 +08:00
2026-07-23 14:52:57 +08:00
2026-07-15 21:06:05 +08:00
2026-07-23 10:50:02 +08:00
2026-07-23 14:52:57 +08:00
2026-07-13 13:39:59 +08:00
2026-07-14 19:20:25 +08:00
2026-07-17 22:07:52 +08:00
2026-06-25 20:10:18 +08:00
2026-04-30 17:49:07 +08:00
2026-07-03 15:19:44 +08:00
2026-06-08 21:05:37 +08:00
2026-07-16 17:07:13 +08:00
2026-06-30 20:58:33 +08:00
2026-05-14 14:21:17 +08:00
2026-07-20 20:57:34 +08:00
2026-04-26 18:06:23 +08:00
2026-06-09 15:36:58 +08:00
2026-06-30 19:33:37 +08:00
2026-06-30 19:33:37 +08:00
2026-07-17 16:56:46 +08:00
2026-07-31 13:04:27 +08:00
2026-06-09 15:36:58 +08:00
2026-07-18 22:02:22 +08:00
2026-04-26 18:06:23 +08:00
2026-05-06 12:52:47 +08:00
2026-06-10 22:00:19 +08:00
2026-07-31 05:40:51 +00:00
2026-07-21 19:40:38 +08:00
2026-07-21 19:40:38 +08:00
2026-07-23 18:06:29 +08:00
2026-07-17 16:56:46 +08:00
2026-07-18 22:02:22 +08:00
2026-07-17 22:07:52 +08:00
2026-07-01 14:40:27 +08:00
2026-07-23 14:52:57 +08:00
2026-07-08 22:16:51 +08:00
2026-07-17 22:07:52 +08:00
2026-07-16 17:07:13 +08:00
2026-07-17 22:07:52 +08:00
2026-05-25 14:03:38 +08:00