From 8de419b19fc8044c8fb230b854039055e7eecb42 Mon Sep 17 00:00:00 2001 From: Minhan Xia Date: Wed, 5 Jul 2017 14:25:01 -0700 Subject: [PATCH] expose lock release error from iptables util --- pkg/util/iptables/BUILD | 1 + pkg/util/iptables/iptables.go | 8 ++++++-- pkg/util/iptables/iptables_linux.go | 13 ++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/pkg/util/iptables/BUILD b/pkg/util/iptables/BUILD index a8a1868cddb..c688e303ba5 100644 --- a/pkg/util/iptables/BUILD +++ b/pkg/util/iptables/BUILD @@ -24,6 +24,7 @@ go_library( "//vendor/github.com/godbus/dbus:go_default_library", "//vendor/github.com/golang/glog:go_default_library", "//vendor/golang.org/x/sys/unix:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", ], diff --git a/pkg/util/iptables/iptables.go b/pkg/util/iptables/iptables.go index b6c08fa378d..ecd59a476ff 100644 --- a/pkg/util/iptables/iptables.go +++ b/pkg/util/iptables/iptables.go @@ -338,7 +338,7 @@ func (runner *runner) RestoreAll(data []byte, flush FlushFlag, counters RestoreC } type iptablesLocker interface { - Close() + Close() error } // restoreInternal is the shared part of Restore/RestoreAll @@ -361,7 +361,11 @@ func (runner *runner) restoreInternal(args []string, data []byte, flush FlushFla if err != nil { return err } - defer locker.Close() + defer func(locker iptablesLocker) { + if err := locker.Close(); err != nil { + glog.Errorf("Failed to close iptables locks: %v", err) + } + }(locker) } // run the command and return the output or an error including the output and error diff --git a/pkg/util/iptables/iptables_linux.go b/pkg/util/iptables/iptables_linux.go index 4f614cb523d..c28fd62dda8 100644 --- a/pkg/util/iptables/iptables_linux.go +++ b/pkg/util/iptables/iptables_linux.go @@ -25,6 +25,7 @@ import ( "time" "golang.org/x/sys/unix" + utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/wait" ) @@ -33,13 +34,19 @@ type locker struct { lock14 *net.UnixListener } -func (l *locker) Close() { +func (l *locker) Close() error { + errList := []error{} if l.lock16 != nil { - l.lock16.Close() + if err := l.lock16.Close(); err != nil { + errList = append(errList, err) + } } if l.lock14 != nil { - l.lock14.Close() + if err := l.lock14.Close(); err != nil { + errList = append(errList, err) + } } + return utilerrors.NewAggregate(errList) } func grabIptablesLocks(lockfilePath string) (iptablesLocker, error) {