in swim/memberlist.go [385:412]
func (m *memberlist) RemoveLocalLabels(keys ...string) bool {
// keep track if all labels are removed, it will be set to false if a label
// couldn't be removed.
removed := true
m.updateLocalMember(func(member *Member) bool {
// ensure that there is a new copy of the labels to work
// with.
labelsCopy := member.Labels.copy()
any := false // keep track if we at least removed one label
for _, key := range keys {
_, has := labelsCopy[key]
delete(labelsCopy, key)
removed = removed && has
any = any || has
}
if any {
// only if there are changes we put the copied labels on the member.
member.Labels = labelsCopy
}
return any
})
return removed
}