fix: smb drive lastConnTime data race (#3787 close #3782)

pull/3797/head
fregie 2023-03-10 15:59:53 +08:00 committed by GitHub
parent 43de823058
commit d06c605421
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 5 deletions

View File

@ -5,7 +5,6 @@ import (
"errors"
"path/filepath"
"strings"
"time"
"github.com/alist-org/alist/v3/drivers/base"
"github.com/alist-org/alist/v3/internal/driver"
@ -19,7 +18,7 @@ type SMB struct {
model.Storage
Addition
fs *smb2.Share
lastConnTime time.Time
lastConnTime int64
}
func (d *SMB) Config() driver.Config {

View File

@ -6,17 +6,22 @@ import (
"net"
"os"
"path/filepath"
"sync/atomic"
"time"
"github.com/hirochachacha/go-smb2"
)
func (d *SMB) updateLastConnTime() {
d.lastConnTime = time.Now()
atomic.StoreInt64(&d.lastConnTime, time.Now().Unix())
}
func (d *SMB) cleanLastConnTime() {
d.lastConnTime = time.Now().AddDate(0, 0, -1)
atomic.StoreInt64(&d.lastConnTime, 0)
}
func (d *SMB) getLastConnTime() time.Time {
return time.Unix(atomic.LoadInt64(&d.lastConnTime), 0)
}
func (d *SMB) initFS() error {
@ -43,7 +48,7 @@ func (d *SMB) initFS() error {
}
func (d *SMB) checkConn() error {
if time.Since(d.lastConnTime) < 5*time.Minute {
if time.Since(d.getLastConnTime()) < 5*time.Minute {
return nil
}
if d.fs != nil {