feat(client): trash can be disabled by sdk

close:#22775703

Signed-off-by: chihe <chihe@oppo.com>
This commit is contained in:
chihe 2024-11-11 19:31:15 +08:00 committed by AmazingChi
parent 5c43034c5f
commit 8209e99634
5 changed files with 37 additions and 25 deletions

View File

@ -66,12 +66,13 @@ func NewS3Scanner(adminTask *proto.AdminTask, l *LcNode) (*LcScanner, error) {
var err error
metaConfig := &meta.MetaConfig{
Volume: scanTask.VolName,
Masters: l.masters,
Authenticate: false,
ValidateOwner: false,
InnerReq: true,
MetaSendTimeout: 600,
Volume: scanTask.VolName,
Masters: l.masters,
Authenticate: false,
ValidateOwner: false,
InnerReq: true,
MetaSendTimeout: 600,
DisableTrashByClient: true,
}
var metaWrapper *meta.MetaWrapper
if metaWrapper, err = meta.NewMetaWrapper(metaConfig); err != nil {

View File

@ -466,12 +466,13 @@ func (l *LcNode) httpServiceGetFile(w http.ResponseWriter, r *http.Request) {
}
metaConfig := &meta.MetaConfig{
Volume: vol,
Masters: l.masters,
Authenticate: false,
ValidateOwner: false,
InnerReq: true,
MetaSendTimeout: 600,
Volume: vol,
Masters: l.masters,
Authenticate: false,
ValidateOwner: false,
InnerReq: true,
MetaSendTimeout: 600,
DisableTrashByClient: true,
}
var metaWrapper *meta.MetaWrapper
if metaWrapper, err = meta.NewMetaWrapper(metaConfig); err != nil {

View File

@ -50,12 +50,13 @@ func NewSnapshotScanner(adminTask *proto.AdminTask, l *LcNode) (*SnapshotScanner
request := adminTask.Request.(*proto.SnapshotVerDelTaskRequest)
var err error
metaConfig := &meta.MetaConfig{
Volume: request.Task.VolName,
Masters: l.masters,
Authenticate: false,
ValidateOwner: false,
InnerReq: true,
MetaSendTimeout: 600,
Volume: request.Task.VolName,
Masters: l.masters,
Authenticate: false,
ValidateOwner: false,
InnerReq: true,
MetaSendTimeout: 600,
DisableTrashByClient: true,
}
var metaWrapper *meta.MetaWrapper

View File

@ -100,8 +100,9 @@ type MetaConfig struct {
TrashTraverseLimit int
TrashRebuildGoroutineLimit int
VerReadSeq uint64
InnerReq bool
VerReadSeq uint64
InnerReq bool
DisableTrashByClient bool
}
type MetaWrapper struct {
@ -253,6 +254,7 @@ func NewMetaWrapper(config *MetaConfig) (*MetaWrapper, error) {
limit := MaxMountRetryLimit
mw.DefaultStorageClass = proto.StorageClass_Unspecified
mw.InnerReq = config.InnerReq
mw.disableTrashByClient = config.DisableTrashByClient
for limit > 0 {
err = mw.initMetaWrapper()
@ -275,7 +277,9 @@ func NewMetaWrapper(config *MetaConfig) (*MetaWrapper, error) {
}
break
}
mw.enableTrash()
if !mw.disableTrashByClient {
mw.enableTrash()
}
if limit <= 0 && err != nil {
return nil, err
}

View File

@ -174,9 +174,15 @@ func (mw *MetaWrapper) updateVolStatInfo() (err error) {
atomic.StoreUint64(&mw.totalSize, info.TotalSize)
atomic.StoreUint64(&mw.usedSize, info.UsedSize)
atomic.StoreUint64(&mw.inodeCount, info.InodeCount)
// 0 means disable trash
atomic.StoreInt64(&mw.TrashInterval, info.TrashInterval)
atomic.StoreUint32(&mw.DefaultStorageClass, info.DefaultStorageClass)
log.LogInfof("[updateVolStatInfo]: info(%+v), defaultStorageClass(%v)",
info, proto.StorageClassString(info.DefaultStorageClass))
// 0 means disable trash
if mw.disableTrashByClient {
log.LogDebugf("updateVolStatInfo: trash for %v is disabled by client", mw.volname)
return
}
atomic.StoreInt64(&mw.TrashInterval, info.TrashInterval)
if info.TrashInterval == 0 {
mw.disableTrash = true
} else {
@ -185,8 +191,7 @@ func (mw *MetaWrapper) updateVolStatInfo() (err error) {
mw.trashPolicy.UpdateDeleteInterval(info.TrashInterval)
}
}
log.LogInfof("[updateVolStatInfo]: info(%+v), disableTrash(%v) defaultStorageClass(%v)",
info, mw.disableTrash, proto.StorageClassString(info.DefaultStorageClass))
log.LogInfof("[updateVolStatInfo]: info(%+v), disableTrash(%v) ", info, mw.disableTrash)
return
}