From 53e63973b0db2648edc5ba3ba2b8588fae9f5cf4 Mon Sep 17 00:00:00 2001 From: Andrew Prokhorenkov Date: Wed, 22 Jul 2026 11:10:40 -0500 Subject: [PATCH] check if .keep file exist before creating --- hatchery/sharedworkspace.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/hatchery/sharedworkspace.go b/hatchery/sharedworkspace.go index ea8a451..3238f2e 100644 --- a/hatchery/sharedworkspace.go +++ b/hatchery/sharedworkspace.go @@ -7,6 +7,7 @@ import ( "encoding/json" "fmt" "io" + "net/http" "path" "strings" @@ -73,7 +74,21 @@ func ensureKeepFiles(prefixes []SharedWorkspacePrefix) error { for _, p := range prefixes { key := path.Join(p.Prefix, ".keep") - _, err := svc.PutObject(&s3.PutObjectInput{ + _, err := svc.HeadObject(&s3.HeadObjectInput{ + Bucket: aws.String(p.BucketName), + Key: aws.String(key), + }) + if err == nil { + // The .keep object already exists. + continue + } + + // Only create the object when it does not exist. + if reqErr, ok := err.(awserr.RequestFailure); !ok || reqErr.StatusCode() != http.StatusNotFound { + return err + } + + _, err = svc.PutObject(&s3.PutObjectInput{ Bucket: aws.String(p.BucketName), Key: aws.String(key), Body: nil,