mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
filer: optional recursive deletion
fix https://github.com/chrislusf/seaweedfs/issues/1176
This commit is contained in:
parent
09043c8e5a
commit
86d4b18eb5
|
@ -59,16 +59,25 @@ const (
|
||||||
# $HOME/.seaweedfs/filer.toml
|
# $HOME/.seaweedfs/filer.toml
|
||||||
# /etc/seaweedfs/filer.toml
|
# /etc/seaweedfs/filer.toml
|
||||||
|
|
||||||
|
####################################################
|
||||||
|
# Customizable filer server options
|
||||||
|
####################################################
|
||||||
|
[filer.options]
|
||||||
|
# with http DELETE, by default the filer would check whether a folder is empty.
|
||||||
|
# recursive_delete will delete all sub folders and files, similar to "rm -Rf"
|
||||||
|
recursive_delete = false
|
||||||
|
|
||||||
|
|
||||||
|
####################################################
|
||||||
|
# The following are filer store options
|
||||||
|
####################################################
|
||||||
|
|
||||||
[leveldb2]
|
[leveldb2]
|
||||||
# local on disk, mostly for simple single-machine setup, fairly scalable
|
# local on disk, mostly for simple single-machine setup, fairly scalable
|
||||||
# faster than previous leveldb, recommended.
|
# faster than previous leveldb, recommended.
|
||||||
enabled = true
|
enabled = true
|
||||||
dir = "." # directory to store level db files
|
dir = "." # directory to store level db files
|
||||||
|
|
||||||
####################################################
|
|
||||||
# multiple filers on shared storage, fairly scalable
|
|
||||||
####################################################
|
|
||||||
|
|
||||||
[mysql] # or tidb
|
[mysql] # or tidb
|
||||||
# CREATE TABLE IF NOT EXISTS filemeta (
|
# CREATE TABLE IF NOT EXISTS filemeta (
|
||||||
# dirhash BIGINT COMMENT 'first 64 bits of MD5 hash value of directory field',
|
# dirhash BIGINT COMMENT 'first 64 bits of MD5 hash value of directory field',
|
||||||
|
|
|
@ -7,11 +7,14 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/operation"
|
"github.com/chrislusf/seaweedfs/weed/operation"
|
||||||
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||||
"github.com/chrislusf/seaweedfs/weed/stats"
|
"github.com/chrislusf/seaweedfs/weed/stats"
|
||||||
"github.com/chrislusf/seaweedfs/weed/util"
|
"github.com/chrislusf/seaweedfs/weed/util"
|
||||||
"google.golang.org/grpc"
|
|
||||||
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
"github.com/chrislusf/seaweedfs/weed/filer2"
|
"github.com/chrislusf/seaweedfs/weed/filer2"
|
||||||
_ "github.com/chrislusf/seaweedfs/weed/filer2/cassandra"
|
_ "github.com/chrislusf/seaweedfs/weed/filer2/cassandra"
|
||||||
|
@ -30,7 +33,6 @@ import (
|
||||||
_ "github.com/chrislusf/seaweedfs/weed/notification/kafka"
|
_ "github.com/chrislusf/seaweedfs/weed/notification/kafka"
|
||||||
_ "github.com/chrislusf/seaweedfs/weed/notification/log"
|
_ "github.com/chrislusf/seaweedfs/weed/notification/log"
|
||||||
"github.com/chrislusf/seaweedfs/weed/security"
|
"github.com/chrislusf/seaweedfs/weed/security"
|
||||||
"github.com/spf13/viper"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type FilerOption struct {
|
type FilerOption struct {
|
||||||
|
@ -45,6 +47,7 @@ type FilerOption struct {
|
||||||
DefaultLevelDbDir string
|
DefaultLevelDbDir string
|
||||||
DisableHttp bool
|
DisableHttp bool
|
||||||
Port int
|
Port int
|
||||||
|
recursiveDelete bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type FilerServer struct {
|
type FilerServer struct {
|
||||||
|
@ -80,6 +83,7 @@ func NewFilerServer(defaultMux, readonlyMux *http.ServeMux, option *FilerOption)
|
||||||
}
|
}
|
||||||
util.LoadConfiguration("notification", false)
|
util.LoadConfiguration("notification", false)
|
||||||
|
|
||||||
|
fs.option.recursiveDelete = v.GetBool("filer.options.recursive_delete")
|
||||||
fs.filer.LoadConfiguration(v)
|
fs.filer.LoadConfiguration(v)
|
||||||
|
|
||||||
notification.LoadConfiguration(v.Sub("notification"))
|
notification.LoadConfiguration(v.Sub("notification"))
|
||||||
|
|
|
@ -284,6 +284,11 @@ func (fs *FilerServer) uploadToVolumeServer(r *http.Request, u *url.URL, auth se
|
||||||
func (fs *FilerServer) DeleteHandler(w http.ResponseWriter, r *http.Request) {
|
func (fs *FilerServer) DeleteHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
isRecursive := r.FormValue("recursive") == "true"
|
isRecursive := r.FormValue("recursive") == "true"
|
||||||
|
if !isRecursive && fs.option.recursiveDelete {
|
||||||
|
if r.FormValue("recursive") != "false" {
|
||||||
|
isRecursive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
ignoreRecursiveError := r.FormValue("ignoreRecursiveError") == "true"
|
ignoreRecursiveError := r.FormValue("ignoreRecursiveError") == "true"
|
||||||
skipChunkDeletion := r.FormValue("skipChunkDeletion") == "true"
|
skipChunkDeletion := r.FormValue("skipChunkDeletion") == "true"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue