|
|
@ -3,6 +3,7 @@ package shell |
|
|
|
import ( |
|
|
|
"flag" |
|
|
|
"fmt" |
|
|
|
"github.com/chrislusf/seaweedfs/weed/security" |
|
|
|
"github.com/chrislusf/seaweedfs/weed/util" |
|
|
|
"io" |
|
|
|
"math" |
|
|
@ -39,6 +40,8 @@ func (c *commandS3CleanUploads) Do(args []string, commandEnv *CommandEnv, writer |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
signingKey := util.GetViper().GetString("jwt.signing.key") |
|
|
|
|
|
|
|
var filerBucketsPath string |
|
|
|
filerBucketsPath, err = readFilerBucketsPath(commandEnv) |
|
|
|
if err != nil { |
|
|
@ -55,7 +58,7 @@ func (c *commandS3CleanUploads) Do(args []string, commandEnv *CommandEnv, writer |
|
|
|
} |
|
|
|
|
|
|
|
for _, bucket := range buckets { |
|
|
|
if err := c.cleanupUploads(commandEnv, writer, filerBucketsPath, bucket, *uploadedTimeAgo); err != nil { |
|
|
|
if err := c.cleanupUploads(commandEnv, writer, filerBucketsPath, bucket, *uploadedTimeAgo, signingKey); err != nil { |
|
|
|
fmt.Fprintf(writer, fmt.Sprintf("failed cleanup uploads for backet %s: %v", bucket, err)) |
|
|
|
} |
|
|
|
} |
|
|
@ -64,7 +67,7 @@ func (c *commandS3CleanUploads) Do(args []string, commandEnv *CommandEnv, writer |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func (c *commandS3CleanUploads) cleanupUploads(commandEnv *CommandEnv, writer io.Writer, filerBucketsPath string, bucket string, timeAgo time.Duration) error { |
|
|
|
func (c *commandS3CleanUploads) cleanupUploads(commandEnv *CommandEnv, writer io.Writer, filerBucketsPath string, bucket string, timeAgo time.Duration, signingKey string) error { |
|
|
|
uploadsDir := filerBucketsPath + "/" + bucket + "/.uploads" |
|
|
|
var staleUploads []string |
|
|
|
now := time.Now() |
|
|
@ -79,11 +82,16 @@ func (c *commandS3CleanUploads) cleanupUploads(commandEnv *CommandEnv, writer io |
|
|
|
return fmt.Errorf("list uploads under %v: %v", uploadsDir, err) |
|
|
|
} |
|
|
|
|
|
|
|
var encodedJwt security.EncodedJwt |
|
|
|
if signingKey != "" { |
|
|
|
encodedJwt = security.GenJwtForFilerServer(security.SigningKey(signingKey), 15*60) |
|
|
|
} |
|
|
|
|
|
|
|
for _, staleUpload := range staleUploads { |
|
|
|
deleteUrl := fmt.Sprintf("http://%s%s/%s?recursive=true&ignoreRecursiveError=true", commandEnv.option.FilerAddress.ToHttpAddress(), uploadsDir, staleUpload) |
|
|
|
fmt.Fprintf(writer, "purge %s\n", deleteUrl) |
|
|
|
|
|
|
|
err = util.Delete(deleteUrl, "") |
|
|
|
err = util.Delete(deleteUrl, string(encodedJwt)) |
|
|
|
if err != nil && err.Error() != "" { |
|
|
|
return fmt.Errorf("purge %s/%s: %v", uploadsDir, staleUpload, err) |
|
|
|
} |
|
|
|