@@ -936,6 +936,50 @@ var _ = Describe("manger.Manager", func() {
936
936
<- runnableStopped
937
937
})
938
938
939
+ It ("should wait forever for runnables if gracefulShutdownTimeout is <0 (-1)" , func () {
940
+ m , err := New (cfg , options )
941
+ Expect (err ).NotTo (HaveOccurred ())
942
+ for _ , cb := range callbacks {
943
+ cb (m )
944
+ }
945
+ m .(* controllerManager ).gracefulShutdownTimeout = time .Duration (- 1 )
946
+
947
+ Expect (m .Add (RunnableFunc (func (ctx context.Context ) error {
948
+ <- ctx .Done ()
949
+ time .Sleep (100 * time .Millisecond )
950
+ return nil
951
+ }))).ToNot (HaveOccurred ())
952
+ Expect (m .Add (RunnableFunc (func (ctx context.Context ) error {
953
+ <- ctx .Done ()
954
+ time .Sleep (200 * time .Millisecond )
955
+ return nil
956
+ }))).ToNot (HaveOccurred ())
957
+ Expect (m .Add (RunnableFunc (func (ctx context.Context ) error {
958
+ <- ctx .Done ()
959
+ time .Sleep (500 * time .Millisecond )
960
+ return nil
961
+ }))).ToNot (HaveOccurred ())
962
+ Expect (m .Add (RunnableFunc (func (ctx context.Context ) error {
963
+ <- ctx .Done ()
964
+ time .Sleep (1500 * time .Millisecond )
965
+ return nil
966
+ }))).ToNot (HaveOccurred ())
967
+
968
+ ctx , cancel := context .WithCancel (context .Background ())
969
+ managerStopDone := make (chan struct {})
970
+ go func () {
971
+ defer GinkgoRecover ()
972
+ Expect (m .Start (ctx )).NotTo (HaveOccurred ())
973
+ close (managerStopDone )
974
+ }()
975
+ <- m .Elected ()
976
+ cancel ()
977
+
978
+ beforeDone := time .Now ()
979
+ <- managerStopDone
980
+ Expect (time .Since (beforeDone )).To (BeNumerically (">=" , 1500 * time .Millisecond ))
981
+ })
982
+
939
983
}
940
984
941
985
Context ("with defaults" , func () {
0 commit comments