diff --git a/Amazon-S3-API.md b/Amazon-S3-API.md index 9166164..0e52fe3 100644 --- a/Amazon-S3-API.md +++ b/Amazon-S3-API.md @@ -190,7 +190,7 @@ Metadata keys are case-insensitive and stored in canonical format (e.g., `x-amz- SeaweedFS has directories while AWS S3 only has objects with "fake" directories. In AWS S3, if the last file is deleted in a directory, the directory will disappear also. -To be consistent with AWS S3, SeaweedFS tries to check whether the folder is empty after each deletion. You can use `weed s3 -allowEmptyFolder` to toggle this behavior. +To be consistent with AWS S3, SeaweedFS automatically cleans up empty folders asynchronously after file deletions. # Server-Side Encryption diff --git a/Kubernetes-Backups-and-Recovery-with-K8up.md b/Kubernetes-Backups-and-Recovery-with-K8up.md index 01f780f..7455537 100644 --- a/Kubernetes-Backups-and-Recovery-with-K8up.md +++ b/Kubernetes-Backups-and-Recovery-with-K8up.md @@ -143,7 +143,6 @@ PR ref: https://github.com/seaweedfs/seaweedfs/pull/5034 enableAuth: true port: 8333 httpsPort: 0 - allowEmptyFolder: false createBuckets: - name: shared anonymousRead: false @@ -561,7 +560,6 @@ PR ref: https://github.com/seaweedfs/seaweedfs/pull/5034 enableAuth: false port: 8333 httpsPort: 0 - allowEmptyFolder: false livenessProbe: periodSeconds: 5 readinessProbe: diff --git a/S3-API-FAQ.md b/S3-API-FAQ.md index d233eaa..903d82e 100644 --- a/S3-API-FAQ.md +++ b/S3-API-FAQ.md @@ -41,17 +41,9 @@ Having separate LevelDB instance, or separate SQL tables, will help to isolate t ## Filer Metadata Store Growth -Due to the semantics of the S3 API, empty directories (aka prefixes) aren't shown. However, an entry is still stored in the filer metadata store. When workload access patterns create many unique directories and then remove all the objects inside those directories, the filer metadata store can grow unbounded with orphaned directories. These directories are visible in the filer metadata store itself, but not using the S3 API. +Due to the semantics of the S3 API, empty directories (aka prefixes) aren't shown. However, an entry is still stored in the filer metadata store. When workload access patterns create many unique directories and then remove all the objects inside those directories, the filer metadata store can grow with orphaned directories. -If the filer argument `-s3.allowEmptyFolder=false` is set, the orphaned directories are cleaned up during list requests for non bucket-level directories. Normally this works well, but if the workload never performs a list operation, the orphaned directories may never be cleaned up. To force cleanup, simply list an existing, non bucket-level directory. - -Example using rclone: - -``` -rclone lsf seaweedfs:my-bucket/dir -``` - -If the directory `dir` exists in `my-bucket`, the orphaned metadata will be cleaned up. Note that due to slight API usage differences, `rclone ls` does not trigger cleanup, but `rclone lsf` will. +SeaweedFS now automatically cleans up empty folders asynchronously after file deletions using an event-driven cleanup mechanism. Empty folders are detected and removed in the background without impacting S3 API performance. ## Setting TTL