crossoverJie/gorm-optimistic

空指针异常风险

sjsdfg opened this issue · 6 comments

if err = UpdateWithOptimistic(db, &out, nil, 0, 0); err != nil {

当不需要回调时, callback 允许为空。

if err = UpdateWithOptimistic(db, &out, nil, 0, 0); err != nil {

当不需要回调时, callback 允许为空。

你这个测试用例根本不能测到那个点。你这个就是跑一次的单侧。在本地环境下,你这个第一次执行就肯定成功了。根本不会进入到重试逻辑。

一旦进入到重试逻辑,你这里就的必须调用 callback。 你这里再传入一个nil。不就直接 panic 了。

要么就下面的逻辑改了
if callback != nil {
    model = callback(model)
}

如果 callback 允许为空和要 retryCount = 0 必须成对存在的话,前面的 readme 是没有体现的。而且这样也很容易引起误用。非常不可靠。

我这边是直接不连接到 mysql 来模拟更新失败的情况,只要 RetryCount 变大,就是必定 panic 的