func()

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
}