From a42c066af703b3829c9a5e22697df893a0ab1cca Mon Sep 17 00:00:00 2001 From: Shiming Zhang Date: Tue, 29 Jun 2021 16:23:37 +0800 Subject: [PATCH 1/2] Fix Data Race in nodeshutdown restart --- .../nodeshutdown_manager_linux_test.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go b/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go index 871f491c1c0..5a0e6ef4126 100644 --- a/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go +++ b/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go @@ -21,6 +21,7 @@ package nodeshutdown import ( "fmt" "strings" + "sync" "testing" "time" @@ -329,15 +330,18 @@ func TestRestart(t *testing.T) { syncNodeStatus := func() {} var shutdownChan chan bool + var shutdownChanMut sync.Mutex var connChan = make(chan struct{}, 1) systemDbus = func() (dbusInhibiter, error) { defer func() { connChan <- struct{}{} }() - - shutdownChan = make(chan bool) - dbus := &fakeDbus{currentInhibitDelay: systemInhibitDelay, shutdownChan: shutdownChan, overrideSystemInhibitDelay: overrideSystemInhibitDelay} + ch := make(chan bool) + shutdownChanMut.Lock() + shutdownChan = ch + shutdownChanMut.Unlock() + dbus := &fakeDbus{currentInhibitDelay: systemInhibitDelay, shutdownChan: ch, overrideSystemInhibitDelay: overrideSystemInhibitDelay} return dbus, nil } @@ -354,7 +358,9 @@ func TestRestart(t *testing.T) { case <-connChan: } - time.Sleep(time.Second) + time.Sleep(dbusReconnectPeriod) + shutdownChanMut.Lock() close(shutdownChan) + shutdownChanMut.Unlock() } } From 212ce7c28718573d500e5fae5dbb05b3478f5c37 Mon Sep 17 00:00:00 2001 From: Shiming Zhang Date: Wed, 30 Jun 2021 09:48:26 +0800 Subject: [PATCH 2/2] Shorten test time --- pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go b/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go index 5a0e6ef4126..a2816153408 100644 --- a/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go +++ b/pkg/kubelet/nodeshutdown/nodeshutdown_manager_linux_test.go @@ -351,14 +351,13 @@ func TestRestart(t *testing.T) { t.Errorf("unexpected error: %v", err) } - for i := 0; i != 5; i++ { + for i := 0; i != 3; i++ { select { case <-time.After(dbusReconnectPeriod * 5): t.Fatal("wait dbus connect timeout") case <-connChan: } - time.Sleep(dbusReconnectPeriod) shutdownChanMut.Lock() close(shutdownChan) shutdownChanMut.Unlock()