fix: replication of tag removal (#14056)

Currently tag removal leaves replication state as `PENDING` 
because the `HEAD` api returns just a tag count but not the 
actual tags, and this is treated as a no-op
This commit is contained in:
Poorna
2022-01-10 19:06:10 -08:00
committed by GitHub
parent 737a3f0bad
commit 54a98773f8
4 changed files with 62 additions and 1 deletions

View File

@@ -769,7 +769,7 @@ func getReplicationAction(oi1 ObjectInfo, oi2 minio.ObjectInfo, opType replicati
}
t, _ := tags.ParseObjectTags(oi1.UserTags)
if !reflect.DeepEqual(oi2.UserTags, t.ToMap()) {
if !reflect.DeepEqual(oi2.UserTags, t.ToMap()) || (oi2.UserTagCount != len(t.ToMap())) {
return replicateMetadata
}

View File

@@ -1573,6 +1573,7 @@ func (er erasureObjects) PutObjectTags(ctx context.Context, bucket, object strin
filterOnlineDisksInplace(fi, metaArr, onlineDisks)
fi.Metadata[xhttp.AmzObjectTagging] = tags
fi.ReplicationState = opts.PutReplicationState()
for k, v := range opts.UserDefined {
fi.Metadata[k] = v
}