From 25643cfbc6fdde5a73725b557fd2d6ae8e66484f Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Thu, 21 Mar 2024 20:12:31 +0500 Subject: [PATCH] fix: panic: assignment to entry in nil map on S3Sink.CreateEntry (#5406) --- weed/replication/sink/s3sink/s3_sink.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/weed/replication/sink/s3sink/s3_sink.go b/weed/replication/sink/s3sink/s3_sink.go index 276ea30d6..81acd9a2d 100644 --- a/weed/replication/sink/s3sink/s3_sink.go +++ b/weed/replication/sink/s3sink/s3_sink.go @@ -175,18 +175,23 @@ func (s3sink *S3Sink) CreateEntry(key string, entry *filer_pb.Entry, signatures uploader.PartSize = 0 } } - if _, ok := entry.Extended[s3_constants.AmzUserMetaMtime]; !ok { + + doSaveMtime := true + if entry.Extended == nil { + entry.Extended = make(map[string][]byte) + } else if _, ok := entry.Extended[s3_constants.AmzUserMetaMtime]; ok { + doSaveMtime = false + } + if doSaveMtime { entry.Extended[s3_constants.AmzUserMetaMtime] = []byte(strconv.FormatInt(entry.Attributes.Mtime, 10)) } // process tagging tags := "" - if true { - for k, v := range entry.Extended { - if len(tags) > 0 { - tags = tags + "&" - } - tags = tags + k + "=" + string(v) + for k, v := range entry.Extended { + if len(tags) > 0 { + tags = tags + "&" } + tags = tags + k + "=" + string(v) } // Upload the file to S3.