quota tracking: fix concurrent updates

added a test case to check quota size for upload that replace an existing file
This commit is contained in:
Nicola Murino
2019-07-28 13:24:46 +02:00
parent b728a06984
commit c547c5c9ee
6 changed files with 85 additions and 36 deletions

View File

@@ -168,8 +168,9 @@ func (c Connection) Filewrite(request *sftp.Request) (io.WriterAt, error) {
}
if trunc {
// the file is truncated so we need to decrease quota size but not quota files
logger.Debug(logSender, "file truncation requested update quota for user %v", c.User.Username)
dataprovider.UpdateUserQuota(dataProvider, c.User.Username, -1, -stat.Size(), false)
dataprovider.UpdateUserQuota(dataProvider, c.User.Username, 0, -stat.Size(), false)
}
utils.SetPathPermissions(p, c.User.GetUID(), c.User.GetGID())
@@ -185,7 +186,7 @@ func (c Connection) Filewrite(request *sftp.Request) (io.WriterAt, error) {
user: c.User,
connectionID: c.ID,
transferType: transferUpload,
isNewFile: trunc,
isNewFile: !trunc,
}
addTransfer(&transfer)
return &transfer, nil