Fix: add optimism lock when updating file size
This commit is contained in:
parent
e0714fdd53
commit
081e75146c
2 changed files with 7 additions and 2 deletions
2
assets
2
assets
|
@ -1 +1 @@
|
|||
Subproject commit 39b5171449fb212bab2bb55a10f564012cca88b9
|
||||
Subproject commit e0da8f48856e3fb6e3e9cc920a32390ca132935e
|
|
@ -268,6 +268,7 @@ func (file *File) UpdatePicInfo(value string) error {
|
|||
}
|
||||
|
||||
// UpdateSize 更新文件的大小信息
|
||||
// TODO: 全局锁
|
||||
func (file *File) UpdateSize(value uint64) error {
|
||||
tx := DB.Begin()
|
||||
var sizeDelta uint64
|
||||
|
@ -281,7 +282,10 @@ func (file *File) UpdateSize(value uint64) error {
|
|||
sizeDelta = file.Size - value
|
||||
}
|
||||
|
||||
if res := tx.Model(&file).Set("gorm:association_autoupdate", false).Update("size", value); res.Error != nil {
|
||||
if res := tx.Model(&file).
|
||||
Where("size = ?", file.Size).
|
||||
Set("gorm:association_autoupdate", false).
|
||||
Update("size", value); res.Error != nil {
|
||||
tx.Rollback()
|
||||
return res.Error
|
||||
}
|
||||
|
@ -291,6 +295,7 @@ func (file *File) UpdateSize(value uint64) error {
|
|||
return err
|
||||
}
|
||||
|
||||
file.Size = value
|
||||
return tx.Commit().Error
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue