Browse Source

filer: delete specific tags

fix https://github.com/chrislusf/seaweedfs/issues/2041
pull/2050/head
Chris Lu 4 years ago
parent
commit
e24ba2aadc
  1. 16
      weed/server/filer_server_handlers_tagging.go

16
weed/server/filer_server_handlers_tagging.go

@ -78,13 +78,29 @@ func (fs *FilerServer) DeleteTaggingHandler(w http.ResponseWriter, r *http.Reque
existingEntry.Extended = make(map[string][]byte)
}
// parse out tags to be deleted
toDelete := strings.Split(r.URL.Query().Get("tagging"), ",")
deletions := make(map[string]struct{})
for _, deletion := range toDelete {
deletions[deletion] = struct{}{}
}
// delete all tags or specific tags
hasDeletion := false
for header, _ := range existingEntry.Extended {
if strings.HasPrefix(header, needle.PairNamePrefix) {
if len(deletions) == 0 {
delete(existingEntry.Extended, header)
hasDeletion = true
} else {
tag := header[len(needle.PairNamePrefix):]
if _, found := deletions[tag]; found {
delete(existingEntry.Extended, header)
hasDeletion = true
}
}
}
}
if !hasDeletion {
writeJsonQuiet(w, r, http.StatusNotModified, nil)

Loading…
Cancel
Save