mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-10-24 23:10:41 +02:00
filer: allow clearing a bucket read-only flag stuck after quota removal (#10310)
* filer: allow clearing a bucket read-only flag stuck after quota removal Once s3.bucket.quota.enforce marks a bucket read-only, removing or disabling the quota orphans the flag: enforcement skips buckets with a non-positive quota, and fs.configure merges booleans with OR so -readOnly=false could never turn it off. The only way out was deleting the whole path rule. - s3.bucket.quota -op=remove/disable and the admin server quota update now lift the read-only flag on the bucket's path rule - fs.configure now honors explicitly passed false boolean flags (-readOnly, -fsync, -worm) instead of OR-merging them away * filer: ClearBucketReadOnly reports unchanged when the save fails
This commit is contained in:
1 parent
c006dc563e
commit
e7be6bb2f8
5 files changed
+110
No files matched your search
@@ -41,6 +41,9 @@ func (c *commandFsConfigure) Help() string {
|
||||
# apply the changes
|
||||
fs.configure -locationPrefix=/my/folder -collection=abc -apply
|
||||
|
||||
# example: unlock a bucket that quota enforcement made read-only
|
||||
fs.configure -locationPrefix=/buckets/my_bucket/ -readOnly=false -apply
|
||||
|
||||
# delete the changes
|
||||
fs.configure -locationPrefix=/my/folder -delete -apply
|
||||
|
||||
@@ -131,6 +134,21 @@ func (c *commandFsConfigure) Do(args []string, commandEnv *CommandEnv, writer io
|
||||
fc.DeleteLocationConf(*locationPrefix)
|
||||
} else {
|
||||
fc.AddLocationConf(locConf)
|
||||
// AddLocationConf merges boolean fields with OR, which can never turn
|
||||
// a flag off; let an explicitly passed false win, e.g. -readOnly=false
|
||||
// to reopen a bucket that quota enforcement locked
|
||||
if mergedConf, found := fc.GetLocationConf(*locationPrefix); found {
|
||||
fsConfigureCommand.Visit(func(f *flag.Flag) {
|
||||
switch f.Name {
|
||||
case "readOnly":
|
||||
mergedConf.ReadOnly = *isReadOnly
|
||||
case "fsync":
|
||||
mergedConf.Fsync = *fsync
|
||||
case "worm":
|
||||
mergedConf.Worm = *worm
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user