From 5167bbd2a9ecc832c566a5a21819dfd9b5384358 Mon Sep 17 00:00:00 2001 From: chrislu Date: Sat, 6 Dec 2025 21:52:44 -0800 Subject: [PATCH] Remove deprecated allowEmptyFolder CLI option The allowEmptyFolder option is no longer functional because: 1. The code that used it was already commented out 2. Empty folder cleanup is now handled asynchronously by EmptyFolderCleaner The CLI flags are kept for backward compatibility but marked as deprecated and ignored. This removes: - S3ApiServerOption.AllowEmptyFolder field - The actual usage in s3api_object_handlers_list.go - Helm chart values and template references - References in test Makefiles and docker-compose files --- Makefile | 4 ++-- docker/compose/local-s3tests-compose.yml | 2 +- docker/compose/test-tarantool-filer.yml | 2 +- docker/compose/test-ydb-filer.yml | 2 +- .../templates/all-in-one/all-in-one-deployment.yaml | 5 ----- .../seaweedfs/templates/filer/filer-statefulset.yaml | 3 --- k8s/charts/seaweedfs/templates/s3/s3-deployment.yaml | 3 --- k8s/charts/seaweedfs/values.yaml | 5 ----- test/foundationdb/docker-compose.arm64.yml | 2 +- test/foundationdb/docker-compose.yml | 2 +- test/postgres/docker-compose.yml | 1 - test/s3/cors/Makefile | 3 +-- test/s3/retention/Makefile | 3 +-- test/s3/tagging/Makefile | 3 +-- test/s3/versioning/Makefile | 7 ++----- weed/command/filer.go | 2 +- weed/command/s3.go | 4 +--- weed/command/server.go | 2 +- weed/s3api/s3api_object_handlers_list.go | 10 +--------- weed/s3api/s3api_server.go | 1 - 20 files changed, 16 insertions(+), 50 deletions(-) diff --git a/Makefile b/Makefile index 6abe59423..a4a00a504 100644 --- a/Makefile +++ b/Makefile @@ -18,12 +18,12 @@ full_install: admin-generate cd weed; go install -tags "elastic gocdk sqlite ydb tarantool tikv rclone" server: install - weed -v 0 server -s3 -filer -filer.maxMB=64 -volume.max=0 -master.volumeSizeLimitMB=100 -volume.preStopSeconds=1 -s3.port=8000 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config=./docker/compose/s3.json -metricsPort=9324 + weed -v 0 server -s3 -filer -filer.maxMB=64 -volume.max=0 -master.volumeSizeLimitMB=100 -volume.preStopSeconds=1 -s3.port=8000 -s3.allowDeleteBucketNotEmpty=true -s3.config=./docker/compose/s3.json -metricsPort=9324 benchmark: install warp_install pkill weed || true pkill warp || true - weed server -debug=$(debug) -s3 -filer -volume.max=0 -master.volumeSizeLimitMB=100 -volume.preStopSeconds=1 -s3.port=8000 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false -s3.config=./docker/compose/s3.json & + weed server -debug=$(debug) -s3 -filer -volume.max=0 -master.volumeSizeLimitMB=100 -volume.preStopSeconds=1 -s3.port=8000 -s3.allowDeleteBucketNotEmpty=false -s3.config=./docker/compose/s3.json & warp client & while ! nc -z localhost 8000 ; do sleep 1 ; done warp mixed --host=127.0.0.1:8000 --access-key=some_access_key1 --secret-key=some_secret_key1 --autoterm diff --git a/docker/compose/local-s3tests-compose.yml b/docker/compose/local-s3tests-compose.yml index f1961700c..f89261ec7 100644 --- a/docker/compose/local-s3tests-compose.yml +++ b/docker/compose/local-s3tests-compose.yml @@ -24,7 +24,7 @@ services: - 8888:8888 - 18888:18888 - 8000:8000 - command: 'filer -master="master:9333" -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8000 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false' + command: 'filer -master="master:9333" -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8000 -s3.allowDeleteBucketNotEmpty=false' volumes: - ./s3.json:/etc/seaweedfs/s3.json depends_on: diff --git a/docker/compose/test-tarantool-filer.yml b/docker/compose/test-tarantool-filer.yml index 8f31bf855..a0fa5436a 100644 --- a/docker/compose/test-tarantool-filer.yml +++ b/docker/compose/test-tarantool-filer.yml @@ -15,7 +15,7 @@ services: s3: image: chrislusf/seaweedfs:local - command: "server -ip=127.0.0.1 -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8000 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false" + command: "server -ip=127.0.0.1 -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8000 -s3.allowDeleteBucketNotEmpty=false" volumes: - ./s3.json:/etc/seaweedfs/s3.json environment: diff --git a/docker/compose/test-ydb-filer.yml b/docker/compose/test-ydb-filer.yml index ddbfe18d0..1e310dfb5 100644 --- a/docker/compose/test-ydb-filer.yml +++ b/docker/compose/test-ydb-filer.yml @@ -20,7 +20,7 @@ services: - 8888:8888 - 8000:8000 - 18888:18888 - command: "server -ip=s3 -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8000 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false" + command: "server -ip=s3 -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8000 -s3.allowDeleteBucketNotEmpty=false" volumes: - ./s3.json:/etc/seaweedfs/s3.json environment: diff --git a/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-deployment.yaml b/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-deployment.yaml index 7e1b993cf..f6237bb7e 100644 --- a/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-deployment.yaml +++ b/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-deployment.yaml @@ -246,11 +246,6 @@ spec: -s3.cert.file=/usr/local/share/ca-certificates/client/tls.crt \ -s3.key.file=/usr/local/share/ca-certificates/client/tls.key \ {{- end }} - {{- if ne .Values.allInOne.s3.allowEmptyFolder nil }} - -s3.allowEmptyFolder={{ .Values.allInOne.s3.allowEmptyFolder }} \ - {{- else if ne .Values.s3.allowEmptyFolder nil }} - -s3.allowEmptyFolder={{ .Values.s3.allowEmptyFolder }} \ - {{- end }} {{- if or .Values.allInOne.s3.enableAuth .Values.s3.enableAuth .Values.filer.s3.enableAuth }} -s3.config=/etc/sw/s3/seaweedfs_s3_config \ {{- end }} diff --git a/k8s/charts/seaweedfs/templates/filer/filer-statefulset.yaml b/k8s/charts/seaweedfs/templates/filer/filer-statefulset.yaml index af82bd5e0..2b8c27449 100644 --- a/k8s/charts/seaweedfs/templates/filer/filer-statefulset.yaml +++ b/k8s/charts/seaweedfs/templates/filer/filer-statefulset.yaml @@ -213,9 +213,6 @@ spec: -s3.cert.file=/usr/local/share/ca-certificates/client/tls.crt \ -s3.key.file=/usr/local/share/ca-certificates/client/tls.key \ {{- end }} - {{- if eq (typeOf .Values.filer.s3.allowEmptyFolder) "bool" }} - -s3.allowEmptyFolder={{ .Values.filer.s3.allowEmptyFolder }} \ - {{- end }} {{- if .Values.filer.s3.enableAuth }} -s3.config=/etc/sw/seaweedfs_s3_config \ {{- end }} diff --git a/k8s/charts/seaweedfs/templates/s3/s3-deployment.yaml b/k8s/charts/seaweedfs/templates/s3/s3-deployment.yaml index 830e1d787..29dd2d434 100644 --- a/k8s/charts/seaweedfs/templates/s3/s3-deployment.yaml +++ b/k8s/charts/seaweedfs/templates/s3/s3-deployment.yaml @@ -143,9 +143,6 @@ spec: {{- if .Values.s3.domainName }} -domainName={{ .Values.s3.domainName }} \ {{- end }} - {{- if eq (typeOf .Values.s3.allowEmptyFolder) "bool" }} - -allowEmptyFolder={{ .Values.s3.allowEmptyFolder }} \ - {{- end }} {{- if .Values.s3.enableAuth }} -config=/etc/sw/seaweedfs_s3_config \ {{- end }} diff --git a/k8s/charts/seaweedfs/values.yaml b/k8s/charts/seaweedfs/values.yaml index 0f3f94fc2..2e8bb12e6 100644 --- a/k8s/charts/seaweedfs/values.yaml +++ b/k8s/charts/seaweedfs/values.yaml @@ -856,8 +856,6 @@ filer: port: 8333 # add additional https port httpsPort: 0 - # allow empty folders - allowEmptyFolder: false # Suffix of the host name, {bucket}.{domainName} domainName: "" # enable user & permission to s3 (need to inject to all services) @@ -885,8 +883,6 @@ s3: httpsPort: 0 metricsPort: 9327 loggingOverrideLevel: null - # allow empty folders - allowEmptyFolder: true # enable user & permission to s3 (need to inject to all services) enableAuth: false # set to the name of an existing kubernetes Secret with the s3 json config file @@ -1133,7 +1129,6 @@ allInOne: port: null # S3 gateway port (null inherits from s3.port) httpsPort: null # S3 gateway HTTPS port (null inherits from s3.httpsPort) domainName: null # Suffix of the host name (null inherits from s3.domainName) - allowEmptyFolder: null # Allow empty folders in S3 (null inherits from s3.allowEmptyFolder) enableAuth: false # Enable user & permission to S3 # Set to the name of an existing kubernetes Secret with the s3 json config file # should have a secret key called seaweedfs_s3_config with an inline json config diff --git a/test/foundationdb/docker-compose.arm64.yml b/test/foundationdb/docker-compose.arm64.yml index 9c8f091e9..c2e7e8586 100644 --- a/test/foundationdb/docker-compose.arm64.yml +++ b/test/foundationdb/docker-compose.arm64.yml @@ -147,7 +147,7 @@ services: - "8888:8888" - "8333:8333" - "18888:18888" - command: "server -ip=seaweedfs -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8333 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false" + command: "server -ip=seaweedfs -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8333 -s3.allowDeleteBucketNotEmpty=false" volumes: - ./s3.json:/etc/seaweedfs/s3.json - ./filer.toml:/etc/seaweedfs/filer.toml diff --git a/test/foundationdb/docker-compose.yml b/test/foundationdb/docker-compose.yml index a1257d5c9..933cd41ec 100644 --- a/test/foundationdb/docker-compose.yml +++ b/test/foundationdb/docker-compose.yml @@ -116,7 +116,7 @@ services: - WEED_FOUNDATIONDB_MAX_RETRY_DELAY - WEED_MASTER_VOLUME_GROWTH_COPY_1=1 - WEED_MASTER_VOLUME_GROWTH_COPY_OTHER=1 - command: "weed server -ip=seaweedfs -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8333 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=false" + command: "weed server -ip=seaweedfs -filer -master.volumeSizeLimitMB=16 -volume.max=0 -volume -volume.preStopSeconds=1 -s3 -s3.config=/etc/seaweedfs/s3.json -s3.port=8333 -s3.allowDeleteBucketNotEmpty=false" configs: fdb.cluster: diff --git a/test/postgres/docker-compose.yml b/test/postgres/docker-compose.yml index 6d222f83d..87c36d0e8 100644 --- a/test/postgres/docker-compose.yml +++ b/test/postgres/docker-compose.yml @@ -30,7 +30,6 @@ services: - -s3=true - -s3.port=8333 - -webdav=false - - -s3.allowEmptyFolder=false - -mq.broker=true - -mq.agent=true - -ip=seaweedfs diff --git a/test/s3/cors/Makefile b/test/s3/cors/Makefile index e59124a6a..3164d1341 100644 --- a/test/s3/cors/Makefile +++ b/test/s3/cors/Makefile @@ -79,12 +79,11 @@ start-server: check-deps @echo "🔍 DEBUG: Creating volume directory..." @mkdir -p ./test-volume-data @echo "🔍 DEBUG: Launching SeaweedFS server in background..." - @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -debug -s3 -s3.port=$(S3_PORT) -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -filer -filer.maxMB=64 -master.volumeSizeLimitMB=50 -volume.max=100 -dir=./test-volume-data -volume.preStopSeconds=1 -metricsPort=9324" + @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -debug -s3 -s3.port=$(S3_PORT) -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -filer -filer.maxMB=64 -master.volumeSizeLimitMB=50 -volume.max=100 -dir=./test-volume-data -volume.preStopSeconds=1 -metricsPort=9324" @$(WEED_BINARY) server \ -debug \ -s3 \ -s3.port=$(S3_PORT) \ - -s3.allowEmptyFolder=false \ -s3.allowDeleteBucketNotEmpty=true \ -s3.config=../../../docker/compose/s3.json \ -filer \ diff --git a/test/s3/retention/Makefile b/test/s3/retention/Makefile index 092d2caac..3277e1db0 100644 --- a/test/s3/retention/Makefile +++ b/test/s3/retention/Makefile @@ -81,12 +81,11 @@ start-server: check-deps @echo "🔍 DEBUG: Creating volume directory..." @mkdir -p ./test-volume-data @echo "🔍 DEBUG: Launching SeaweedFS server in background..." - @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -debug -s3 -s3.port=$(S3_PORT) -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -filer -filer.maxMB=64 -master.volumeSizeLimitMB=50 -volume.max=100 -dir=./test-volume-data -volume.preStopSeconds=1 -metricsPort=9324" + @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -debug -s3 -s3.port=$(S3_PORT) -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -filer -filer.maxMB=64 -master.volumeSizeLimitMB=50 -volume.max=100 -dir=./test-volume-data -volume.preStopSeconds=1 -metricsPort=9324" @$(WEED_BINARY) server \ -debug \ -s3 \ -s3.port=$(S3_PORT) \ - -s3.allowEmptyFolder=false \ -s3.allowDeleteBucketNotEmpty=true \ -s3.config=../../../docker/compose/s3.json \ -filer \ diff --git a/test/s3/tagging/Makefile b/test/s3/tagging/Makefile index aa2f18f7c..c495d1a40 100644 --- a/test/s3/tagging/Makefile +++ b/test/s3/tagging/Makefile @@ -77,7 +77,7 @@ start-server: check-deps @echo "🔍 DEBUG: Creating volume directory..." @mkdir -p ./test-volume-data @echo "🔍 DEBUG: Launching SeaweedFS server in background..." - @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -filer -filer.maxMB=64 -s3 -ip.bind 0.0.0.0 -dir=./test-volume-data -master.raftHashicorp -master.electionTimeout 1s -master.volumeSizeLimitMB=100 -volume.max=100 -volume.preStopSeconds=1 -master.port=$(MASTER_PORT) -volume.port=$(VOLUME_PORT) -filer.port=$(FILER_PORT) -s3.port=$(S3_PORT) -metricsPort=9329 -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -master.peers=none" + @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -filer -filer.maxMB=64 -s3 -ip.bind 0.0.0.0 -dir=./test-volume-data -master.raftHashicorp -master.electionTimeout 1s -master.volumeSizeLimitMB=100 -volume.max=100 -volume.preStopSeconds=1 -master.port=$(MASTER_PORT) -volume.port=$(VOLUME_PORT) -filer.port=$(FILER_PORT) -s3.port=$(S3_PORT) -metricsPort=9329 -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -master.peers=none" @$(WEED_BINARY) server \ -filer \ -filer.maxMB=64 \ @@ -94,7 +94,6 @@ start-server: check-deps -filer.port=$(FILER_PORT) \ -s3.port=$(S3_PORT) \ -metricsPort=9329 \ - -s3.allowEmptyFolder=false \ -s3.allowDeleteBucketNotEmpty=true \ -s3.config=../../../docker/compose/s3.json \ -master.peers=none \ diff --git a/test/s3/versioning/Makefile b/test/s3/versioning/Makefile index ccf5e2092..91fd84fc1 100644 --- a/test/s3/versioning/Makefile +++ b/test/s3/versioning/Makefile @@ -81,12 +81,11 @@ start-server: check-deps @echo "🔍 DEBUG: Creating volume directory..." @mkdir -p ./test-volume-data @echo "🔍 DEBUG: Launching SeaweedFS server in background..." - @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -debug -s3 -s3.port=$(S3_PORT) -s3.allowEmptyFolder=false -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -filer -filer.maxMB=64 -master.volumeSizeLimitMB=50 -volume.max=100 -dir=./test-volume-data -volume.preStopSeconds=1 -metricsPort=9324" + @echo "🔍 DEBUG: Command: $(WEED_BINARY) server -debug -s3 -s3.port=$(S3_PORT) -s3.allowDeleteBucketNotEmpty=true -s3.config=../../../docker/compose/s3.json -filer -filer.maxMB=64 -master.volumeSizeLimitMB=50 -volume.max=100 -dir=./test-volume-data -volume.preStopSeconds=1 -metricsPort=9324" @$(WEED_BINARY) server \ -debug \ -s3 \ -s3.port=$(S3_PORT) \ - -s3.allowEmptyFolder=false \ -s3.allowDeleteBucketNotEmpty=true \ -s3.config=../../../docker/compose/s3.json \ -filer \ @@ -222,7 +221,7 @@ test-with-server: start-server test-versioning-with-configs: check-deps @echo "Testing with different S3 configurations..." @echo "Testing with empty folder allowed..." - @$(WEED_BINARY) server -s3 -s3.port=$(S3_PORT) -s3.allowEmptyFolder=true -filer -master.volumeSizeLimitMB=100 -volume.max=100 > weed-test-config1.log 2>&1 & echo $$! > weed-config1.pid + @$(WEED_BINARY) server -s3 -s3.port=$(S3_PORT) -filer -master.volumeSizeLimitMB=100 -volume.max=100 > weed-test-config1.log 2>&1 & echo $$! > weed-config1.pid @sleep 5 @go test -v -timeout=5m -run "TestVersioningBasicWorkflow" . || true @if [ -f weed-config1.pid ]; then kill -TERM $$(cat weed-config1.pid) 2>/dev/null || true; rm -f weed-config1.pid; fi @@ -268,7 +267,6 @@ debug-server: -debug \ -s3 \ -s3.port=$(S3_PORT) \ - -s3.allowEmptyFolder=false \ -s3.allowDeleteBucketNotEmpty=true \ -s3.config=../../../docker/compose/s3.json \ -filer \ @@ -317,7 +315,6 @@ start-server-simple: check-deps -debug \ -s3 \ -s3.port=$(S3_PORT) \ - -s3.allowEmptyFolder=false \ -s3.allowDeleteBucketNotEmpty=true \ -s3.config=../../../docker/compose/s3.json \ -filer \ diff --git a/weed/command/filer.go b/weed/command/filer.go index bb7092543..0e3154819 100644 --- a/weed/command/filer.go +++ b/weed/command/filer.go @@ -122,7 +122,7 @@ func init() { filerS3Options.tlsCertificate = cmdFiler.Flag.String("s3.cert.file", "", "path to the TLS certificate file") filerS3Options.config = cmdFiler.Flag.String("s3.config", "", "path to the config file") filerS3Options.auditLogConfig = cmdFiler.Flag.String("s3.auditLogConfig", "", "path to the audit log config file") - filerS3Options.allowEmptyFolder = cmdFiler.Flag.Bool("s3.allowEmptyFolder", true, "allow empty folders") + cmdFiler.Flag.Bool("s3.allowEmptyFolder", true, "deprecated, ignored. Empty folder cleanup is now automatic.") filerS3Options.allowDeleteBucketNotEmpty = cmdFiler.Flag.Bool("s3.allowDeleteBucketNotEmpty", true, "allow recursive deleting all entries along with bucket") filerS3Options.localSocket = cmdFiler.Flag.String("s3.localSocket", "", "default to /tmp/seaweedfs-s3-.sock") filerS3Options.tlsCACertificate = cmdFiler.Flag.String("s3.cacert.file", "", "path to the TLS CA certificate file") diff --git a/weed/command/s3.go b/weed/command/s3.go index ace6dd427..5fb34155b 100644 --- a/weed/command/s3.go +++ b/weed/command/s3.go @@ -49,7 +49,6 @@ type S3Options struct { tlsVerifyClientCert *bool metricsHttpPort *int metricsHttpIp *string - allowEmptyFolder *bool allowDeleteBucketNotEmpty *bool auditLogConfig *string localFilerSocket *string @@ -80,7 +79,7 @@ func init() { s3StandaloneOptions.tlsVerifyClientCert = cmdS3.Flag.Bool("tlsVerifyClientCert", false, "whether to verify the client's certificate") s3StandaloneOptions.metricsHttpPort = cmdS3.Flag.Int("metricsPort", 0, "Prometheus metrics listen port") s3StandaloneOptions.metricsHttpIp = cmdS3.Flag.String("metricsIp", "", "metrics listen ip. If empty, default to same as -ip.bind option.") - s3StandaloneOptions.allowEmptyFolder = cmdS3.Flag.Bool("allowEmptyFolder", true, "allow empty folders") + cmdS3.Flag.Bool("allowEmptyFolder", true, "deprecated, ignored. Empty folder cleanup is now automatic.") s3StandaloneOptions.allowDeleteBucketNotEmpty = cmdS3.Flag.Bool("allowDeleteBucketNotEmpty", true, "allow recursive deleting all entries along with bucket") s3StandaloneOptions.localFilerSocket = cmdS3.Flag.String("localFilerSocket", "", "local filer socket path") s3StandaloneOptions.localSocket = cmdS3.Flag.String("localSocket", "", "default to /tmp/seaweedfs-s3-.sock") @@ -273,7 +272,6 @@ func (s3opt *S3Options) startS3Server() bool { AllowedOrigins: strings.Split(*s3opt.allowedOrigins, ","), BucketsPath: filerBucketsPath, GrpcDialOption: grpcDialOption, - AllowEmptyFolder: *s3opt.allowEmptyFolder, AllowDeleteBucketNotEmpty: *s3opt.allowDeleteBucketNotEmpty, LocalFilerSocket: localFilerSocket, DataCenter: *s3opt.dataCenter, diff --git a/weed/command/server.go b/weed/command/server.go index 75997c75a..7d1606189 100644 --- a/weed/command/server.go +++ b/weed/command/server.go @@ -166,7 +166,7 @@ func init() { s3Options.config = cmdServer.Flag.String("s3.config", "", "path to the config file") s3Options.iamConfig = cmdServer.Flag.String("s3.iam.config", "", "path to the advanced IAM config file for S3. Overrides -iam.config if both are provided.") s3Options.auditLogConfig = cmdServer.Flag.String("s3.auditLogConfig", "", "path to the audit log config file") - s3Options.allowEmptyFolder = cmdServer.Flag.Bool("s3.allowEmptyFolder", true, "allow empty folders") + cmdServer.Flag.Bool("s3.allowEmptyFolder", true, "deprecated, ignored. Empty folder cleanup is now automatic.") s3Options.allowDeleteBucketNotEmpty = cmdServer.Flag.Bool("s3.allowDeleteBucketNotEmpty", true, "allow recursive deleting all entries along with bucket") s3Options.localSocket = cmdServer.Flag.String("s3.localSocket", "", "default to /tmp/seaweedfs-s3-.sock") s3Options.bindIp = cmdServer.Flag.String("s3.ip.bind", "", "ip address to bind to. If empty, default to same as -ip.bind option.") diff --git a/weed/s3api/s3api_object_handlers_list.go b/weed/s3api/s3api_object_handlers_list.go index 3edbc9522..ad65bd4fe 100644 --- a/weed/s3api/s3api_object_handlers_list.go +++ b/weed/s3api/s3api_object_handlers_list.go @@ -554,15 +554,7 @@ func (s3a *S3ApiServer) doListFilerEntries(client filer_pb.SeaweedFilerClient, d } // println("doListFilerEntries2 nextMarker", nextMarker) } else { - var isEmpty bool - if !s3a.option.AllowEmptyFolder && entry.IsOlderDir() { - //if isEmpty, err = s3a.ensureDirectoryAllEmpty(client, dir, entry.Name); err != nil { - // glog.Errorf("check empty folder %s: %v", dir, err) - //} - } - if !isEmpty { - eachEntryFn(dir, entry) - } + eachEntryFn(dir, entry) } } else { eachEntryFn(dir, entry) diff --git a/weed/s3api/s3api_server.go b/weed/s3api/s3api_server.go index a1a3f100b..d75f53dd4 100644 --- a/weed/s3api/s3api_server.go +++ b/weed/s3api/s3api_server.go @@ -43,7 +43,6 @@ type S3ApiServerOption struct { AllowedOrigins []string BucketsPath string GrpcDialOption grpc.DialOption - AllowEmptyFolder bool AllowDeleteBucketNotEmpty bool LocalFilerSocket string DataCenter string