已在 PR #3161(已合并到 main)中修复:bulkWrite 向 writeBatch/writeOne 传入 attempt 计数;seed 按 externalId、import 按 matchFields 在 attempt > 1 时回查已存在行、只补插缺失行——commit 后响应丢失的重试不再整批重复插入。纯 insert 模式(无自然键)按文档保持 at-least-once。回归测试见 packages/metadata-protocol/src/seed-loader-retry.test.ts、packages/rest/src/import-runner-idempotency.test.ts。
—— 原始 issue 内容 ——
问题
bulkWrite 的 transient 重试是 at-least-once 且无幂等手段:当驱动实际已提交、但成功响应在网络上丢失(turso 类 HTTP 驱动的真实故障形态——错误发生在 commit 之后)时,重试会把整批再插一遍。
已在 PR #3161(已合并到 main)中修复:
bulkWrite向writeBatch/writeOne传入attempt计数;seed 按externalId、import 按matchFields在attempt > 1时回查已存在行、只补插缺失行——commit 后响应丢失的重试不再整批重复插入。纯 insert 模式(无自然键)按文档保持 at-least-once。回归测试见packages/metadata-protocol/src/seed-loader-retry.test.ts、packages/rest/src/import-runner-idempotency.test.ts。—— 原始 issue 内容 ——
问题
bulkWrite的 transient 重试是 at-least-once 且无幂等手段:当驱动实际已提交、但成功响应在网络上丢失(turso 类 HTTP 驱动的真实故障形态——错误发生在 commit 之后)时,重试会把整批再插一遍。