fix: site replication of bucket deletion sync (#352)

Bucket deletion timestamp was not being passed back
in GetBucketInfo, which is needed to decide on the bucket
creation/deletion
This commit is contained in:
Poorna 2025-01-29 11:42:55 -08:00 committed by Harshavardhana
parent 64a8f2e554
commit 4df7a3aa8f
4 changed files with 55 additions and 18 deletions

View File

@ -1308,6 +1308,7 @@ func (s *peerRESTServer) HeadBucketHandler(mss *grid.MSS) (info *VolInfo, nerr *
return &VolInfo{ return &VolInfo{
Name: bucketInfo.Name, Name: bucketInfo.Name,
Created: bucketInfo.Created, Created: bucketInfo.Created,
Deleted: bucketInfo.Deleted, // needed for site replication
}, nil }, nil
} }

View File

@ -393,6 +393,7 @@ func (client *remotePeerS3Client) GetBucketInfo(ctx context.Context, bucket stri
return BucketInfo{ return BucketInfo{
Name: volInfo.Name, Name: volInfo.Name,
Created: volInfo.Created, Created: volInfo.Created,
Deleted: volInfo.Deleted,
}, nil }, nil
} }

View File

@ -111,6 +111,9 @@ type VolInfo struct {
// total VolInfo counts // total VolInfo counts
count int count int
// Date and time when the volume was deleted, if Deleted
Deleted time.Time
} }
// FilesInfo represent a list of files, additionally // FilesInfo represent a list of files, additionally

View File

@ -6504,8 +6504,8 @@ func (z *VolInfo) DecodeMsg(dc *msgp.Reader) (err error) {
err = msgp.WrapError(err) err = msgp.WrapError(err)
return return
} }
if zb0001 != 2 { if zb0001 != 3 {
err = msgp.ArrayError{Wanted: 2, Got: zb0001} err = msgp.ArrayError{Wanted: 3, Got: zb0001}
return return
} }
z.Name, err = dc.ReadString() z.Name, err = dc.ReadString()
@ -6518,13 +6518,18 @@ func (z *VolInfo) DecodeMsg(dc *msgp.Reader) (err error) {
err = msgp.WrapError(err, "Created") err = msgp.WrapError(err, "Created")
return return
} }
z.Deleted, err = dc.ReadTime()
if err != nil {
err = msgp.WrapError(err, "Deleted")
return
}
return return
} }
// EncodeMsg implements msgp.Encodable // EncodeMsg implements msgp.Encodable
func (z VolInfo) EncodeMsg(en *msgp.Writer) (err error) { func (z VolInfo) EncodeMsg(en *msgp.Writer) (err error) {
// array header, size 2 // array header, size 3
err = en.Append(0x92) err = en.Append(0x93)
if err != nil { if err != nil {
return return
} }
@ -6538,16 +6543,22 @@ func (z VolInfo) EncodeMsg(en *msgp.Writer) (err error) {
err = msgp.WrapError(err, "Created") err = msgp.WrapError(err, "Created")
return return
} }
err = en.WriteTime(z.Deleted)
if err != nil {
err = msgp.WrapError(err, "Deleted")
return
}
return return
} }
// MarshalMsg implements msgp.Marshaler // MarshalMsg implements msgp.Marshaler
func (z VolInfo) MarshalMsg(b []byte) (o []byte, err error) { func (z VolInfo) MarshalMsg(b []byte) (o []byte, err error) {
o = msgp.Require(b, z.Msgsize()) o = msgp.Require(b, z.Msgsize())
// array header, size 2 // array header, size 3
o = append(o, 0x92) o = append(o, 0x93)
o = msgp.AppendString(o, z.Name) o = msgp.AppendString(o, z.Name)
o = msgp.AppendTime(o, z.Created) o = msgp.AppendTime(o, z.Created)
o = msgp.AppendTime(o, z.Deleted)
return return
} }
@ -6559,8 +6570,8 @@ func (z *VolInfo) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err) err = msgp.WrapError(err)
return return
} }
if zb0001 != 2 { if zb0001 != 3 {
err = msgp.ArrayError{Wanted: 2, Got: zb0001} err = msgp.ArrayError{Wanted: 3, Got: zb0001}
return return
} }
z.Name, bts, err = msgp.ReadStringBytes(bts) z.Name, bts, err = msgp.ReadStringBytes(bts)
@ -6573,13 +6584,18 @@ func (z *VolInfo) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, "Created") err = msgp.WrapError(err, "Created")
return return
} }
z.Deleted, bts, err = msgp.ReadTimeBytes(bts)
if err != nil {
err = msgp.WrapError(err, "Deleted")
return
}
o = bts o = bts
return return
} }
// Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message // Msgsize returns an upper bound estimate of the number of bytes occupied by the serialized message
func (z VolInfo) Msgsize() (s int) { func (z VolInfo) Msgsize() (s int) {
s = 1 + msgp.StringPrefixSize + len(z.Name) + msgp.TimeSize s = 1 + msgp.StringPrefixSize + len(z.Name) + msgp.TimeSize + msgp.TimeSize
return return
} }
@ -6603,8 +6619,8 @@ func (z *VolsInfo) DecodeMsg(dc *msgp.Reader) (err error) {
err = msgp.WrapError(err, zb0001) err = msgp.WrapError(err, zb0001)
return return
} }
if zb0003 != 2 { if zb0003 != 3 {
err = msgp.ArrayError{Wanted: 2, Got: zb0003} err = msgp.ArrayError{Wanted: 3, Got: zb0003}
return return
} }
(*z)[zb0001].Name, err = dc.ReadString() (*z)[zb0001].Name, err = dc.ReadString()
@ -6617,6 +6633,11 @@ func (z *VolsInfo) DecodeMsg(dc *msgp.Reader) (err error) {
err = msgp.WrapError(err, zb0001, "Created") err = msgp.WrapError(err, zb0001, "Created")
return return
} }
(*z)[zb0001].Deleted, err = dc.ReadTime()
if err != nil {
err = msgp.WrapError(err, zb0001, "Deleted")
return
}
} }
return return
} }
@ -6629,8 +6650,8 @@ func (z VolsInfo) EncodeMsg(en *msgp.Writer) (err error) {
return return
} }
for zb0004 := range z { for zb0004 := range z {
// array header, size 2 // array header, size 3
err = en.Append(0x92) err = en.Append(0x93)
if err != nil { if err != nil {
return return
} }
@ -6644,6 +6665,11 @@ func (z VolsInfo) EncodeMsg(en *msgp.Writer) (err error) {
err = msgp.WrapError(err, zb0004, "Created") err = msgp.WrapError(err, zb0004, "Created")
return return
} }
err = en.WriteTime(z[zb0004].Deleted)
if err != nil {
err = msgp.WrapError(err, zb0004, "Deleted")
return
}
} }
return return
} }
@ -6653,10 +6679,11 @@ func (z VolsInfo) MarshalMsg(b []byte) (o []byte, err error) {
o = msgp.Require(b, z.Msgsize()) o = msgp.Require(b, z.Msgsize())
o = msgp.AppendArrayHeader(o, uint32(len(z))) o = msgp.AppendArrayHeader(o, uint32(len(z)))
for zb0004 := range z { for zb0004 := range z {
// array header, size 2 // array header, size 3
o = append(o, 0x92) o = append(o, 0x93)
o = msgp.AppendString(o, z[zb0004].Name) o = msgp.AppendString(o, z[zb0004].Name)
o = msgp.AppendTime(o, z[zb0004].Created) o = msgp.AppendTime(o, z[zb0004].Created)
o = msgp.AppendTime(o, z[zb0004].Deleted)
} }
return return
} }
@ -6681,8 +6708,8 @@ func (z *VolsInfo) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, zb0001) err = msgp.WrapError(err, zb0001)
return return
} }
if zb0003 != 2 { if zb0003 != 3 {
err = msgp.ArrayError{Wanted: 2, Got: zb0003} err = msgp.ArrayError{Wanted: 3, Got: zb0003}
return return
} }
(*z)[zb0001].Name, bts, err = msgp.ReadStringBytes(bts) (*z)[zb0001].Name, bts, err = msgp.ReadStringBytes(bts)
@ -6695,6 +6722,11 @@ func (z *VolsInfo) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, zb0001, "Created") err = msgp.WrapError(err, zb0001, "Created")
return return
} }
(*z)[zb0001].Deleted, bts, err = msgp.ReadTimeBytes(bts)
if err != nil {
err = msgp.WrapError(err, zb0001, "Deleted")
return
}
} }
o = bts o = bts
return return
@ -6704,7 +6736,7 @@ func (z *VolsInfo) UnmarshalMsg(bts []byte) (o []byte, err error) {
func (z VolsInfo) Msgsize() (s int) { func (z VolsInfo) Msgsize() (s int) {
s = msgp.ArrayHeaderSize s = msgp.ArrayHeaderSize
for zb0004 := range z { for zb0004 := range z {
s += 1 + msgp.StringPrefixSize + len(z[zb0004].Name) + msgp.TimeSize s += 1 + msgp.StringPrefixSize + len(z[zb0004].Name) + msgp.TimeSize + msgp.TimeSize
} }
return return
} }