From 0474791cf8b990c7d44774e7f06f55c415dc3291 Mon Sep 17 00:00:00 2001 From: jiuker <2818723467@qq.com> Date: Wed, 14 Jun 2023 22:49:13 +0800 Subject: [PATCH] fix: set time format right (#17402) --- cmd/erasure-metadata.go | 6 ++---- cmd/xl-storage-format-v2.go | 5 ++--- internal/amztime/parse.go | 10 ++++++++++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/cmd/erasure-metadata.go b/cmd/erasure-metadata.go index 2f8005170..158c9364e 100644 --- a/cmd/erasure-metadata.go +++ b/cmd/erasure-metadata.go @@ -626,11 +626,9 @@ func getInternalReplicationState(m map[string]string) ReplicationState { for k, v := range m { switch { case equals(k, ReservedMetadataPrefixLower+ReplicationTimestamp): - tm, _ := time.Parse(http.TimeFormat, v) - d.ReplicationTimeStamp = tm + d.ReplicaTimeStamp, _ = amztime.ParseReplicationTS(v) case equals(k, ReservedMetadataPrefixLower+ReplicaTimestamp): - tm, _ := time.Parse(http.TimeFormat, v) - d.ReplicaTimeStamp = tm + d.ReplicaTimeStamp, _ = amztime.ParseReplicationTS(v) case equals(k, ReservedMetadataPrefixLower+ReplicaStatus): d.ReplicaStatus = replication.StatusType(v) case equals(k, ReservedMetadataPrefixLower+ReplicationStatus): diff --git a/cmd/xl-storage-format-v2.go b/cmd/xl-storage-format-v2.go index 8bad88041..c3c2332fb 100644 --- a/cmd/xl-storage-format-v2.go +++ b/cmd/xl-storage-format-v2.go @@ -25,7 +25,6 @@ import ( "errors" "fmt" "io" - "net/http" "sort" "strings" "sync" @@ -1341,10 +1340,10 @@ func (x *xlMetaV2) DeleteVersion(fi FileInfo) (string, error) { switch fi.DeleteMarkerReplicationStatus() { case replication.Replica: ver.DeleteMarker.MetaSys[ReservedMetadataPrefixLower+ReplicaStatus] = []byte(fi.ReplicationState.ReplicaStatus) - ver.DeleteMarker.MetaSys[ReservedMetadataPrefixLower+ReplicaTimestamp] = []byte(fi.ReplicationState.ReplicaTimeStamp.UTC().Format(http.TimeFormat)) + ver.DeleteMarker.MetaSys[ReservedMetadataPrefixLower+ReplicaTimestamp] = []byte(fi.ReplicationState.ReplicaTimeStamp.UTC().Format(time.RFC3339Nano)) default: ver.DeleteMarker.MetaSys[ReservedMetadataPrefixLower+ReplicationStatus] = []byte(fi.ReplicationState.ReplicationStatusInternal) - ver.DeleteMarker.MetaSys[ReservedMetadataPrefixLower+ReplicationTimestamp] = []byte(fi.ReplicationState.ReplicationTimeStamp.UTC().Format(http.TimeFormat)) + ver.DeleteMarker.MetaSys[ReservedMetadataPrefixLower+ReplicationTimestamp] = []byte(fi.ReplicationState.ReplicationTimeStamp.UTC().Format(time.RFC3339Nano)) } } if !fi.VersionPurgeStatus().Empty() { diff --git a/internal/amztime/parse.go b/internal/amztime/parse.go index f1ff75b0d..7dcb15cf4 100644 --- a/internal/amztime/parse.go +++ b/internal/amztime/parse.go @@ -70,3 +70,13 @@ func ParseHeader(timeStr string) (time.Time, error) { } return time.Time{}, ErrMalformedDate } + +// ParseReplicationTS parse http.TimeFormat first +// will try time.RFC3339Nano when parse http.TimeFormat failed +func ParseReplicationTS(str string) (time.Time, error) { + tm, err := time.Parse(http.TimeFormat, str) + if tm.IsZero() || err != nil { + tm, err = time.Parse(time.RFC3339Nano, str) + } + return tm, err +}