SQL 存储驱动程序:事务和错误合约正确性问题
作者: Mukuwul创建于 2026年7月19日更新于 2026年9月12日
1. Create/Delete 通过 defer 提交并丢弃提交错误 - 无声数据丢失
Create 以 defer transaction.Commit() 结束,Delete 在其 DELETE 语句运行之前注册了相同的 defer。后果:
- 如果提交失败(连接断开,服务器错误),
Create返回nil,而释放记录从未被持久化;Delete返回已删除的释放,而没有删除任何内容。 - 在
Delete中,在defer之后的错误路径(自定义标签查找或删除失败)仍然 提交部分删除,同时报告失败 - 释放行已删除,标签孤立。
内容来源: helm/helm