add not found error for ipset set and entry delete

pull/6/head
m1093782566 2017-12-18 17:22:26 +08:00
parent 65a7ecf147
commit e6b9b5e0c3
3 changed files with 23 additions and 2 deletions

View File

@ -114,7 +114,9 @@ func (set *IPSet) syncIPSetEntries() {
// Clean legacy entries
for _, entry := range currentIPSetEntries.Difference(set.activeEntries).List() {
if err := set.handle.DelEntry(entry, set.Name); err != nil {
if !utilipset.IsNotFoundError(err) {
glog.Errorf("Failed to delete ip set entry: %s from ip set: %s, error: %v", entry, set.Name, err)
}
} else {
glog.V(3).Infof("Successfully delete legacy ip set entry: %s from ip set: %s", entry, set.Name)
}

View File

@ -824,9 +824,12 @@ func CleanupLeftovers(ipvs utilipvs.Interface, ipt utiliptables.Interface, ipset
for _, set := range ipSetsToDestroy {
err = ipset.DestroySet(set)
if err != nil {
if !utilipset.IsNotFoundError(err) {
glog.Errorf("Error removing ipset %s, error: %v", set, err)
encounteredError = true
}
}
}
return encounteredError
}

View File

@ -322,4 +322,20 @@ func validatePortRange(portRange string) bool {
return true
}
// IsNotFoundError returns true if the error indicates "not found". It parses
// the error string looking for known values, which is imperfect but works in
// practice.
func IsNotFoundError(err error) bool {
es := err.Error()
if strings.Contains(es, "does not exist") {
// set with the same name already exists
return true
}
if strings.Contains(es, "element is missing") {
// entry is missing from the set
return true
}
return false
}
var _ = Interface(&runner{})