diff --git a/weed/filer/filer_deletion.go b/weed/filer/filer_deletion.go index 1ee66eba97..a44938404f 100644 --- a/weed/filer/filer_deletion.go +++ b/weed/filer/filer_deletion.go @@ -64,6 +64,7 @@ var retryablePatterns = []string{ "too many requests", // Rate limiting / backpressure "try again", // Explicit retry suggestion "replication copy count", // A replica is offline; deletes wait for it to return + "no space left on device", // A low-disk replica could not append the tombstone yet } // DeletionRetryItem represents a file deletion that failed and needs to be retried diff --git a/weed/filer/filer_deletion_test.go b/weed/filer/filer_deletion_test.go index 3f1b921aea..dcf1a0edc9 100644 --- a/weed/filer/filer_deletion_test.go +++ b/weed/filer/filer_deletion_test.go @@ -185,6 +185,8 @@ func TestIsRetryableError(t *testing.T) { {"i/o timeout", true, "I/O timeout"}, {"broken pipe", true, "broken pipe"}, {"replication locations [1] is less than volume 9 replication copy count [2]", true, "replica offline"}, + {"write /data/9.dat: no space left on device", true, "disk full"}, + {"No space left on device (os error 28)", true, "disk full (rust)"}, {"not found", false, "not found (not retryable)"}, {"invalid file id", false, "invalid input (not retryable)"}, {"", false, "empty error"},