@@ -136,32 +136,35 @@ func GetGroupControllerCapabilities(ctx context.Context, conn *grpc.ClientConn)
136136func ProbeForever (ctx context.Context , conn * grpc.ClientConn , singleProbeTimeout time.Duration ) error {
137137 logger := klog .FromContext (ctx )
138138 ticker := time .NewTicker (probeInterval )
139+ defer ticker .Stop ()
139140
140141 for {
142+ // Run the probe once before waiting for the ticker
143+ logger .Info ("Probing CSI driver for readiness" )
144+ ready , err := probeOnce (ctx , conn , singleProbeTimeout )
145+ if err != nil {
146+ st , ok := status .FromError (err )
147+ if ! ok {
148+ // This is not gRPC error. The probe must have failed before gRPC
149+ // method was called, otherwise we would get gRPC error.
150+ return fmt .Errorf ("CSI driver probe failed: %s" , err )
151+ }
152+ if st .Code () != codes .DeadlineExceeded {
153+ return fmt .Errorf ("CSI driver probe failed: %s" , err )
154+ }
155+ // Timeout -> driver is not ready. Fall through to sleep() below.
156+ logger .Info ("CSI driver probe timed out" )
157+ } else {
158+ if ready {
159+ return nil
160+ }
161+ logger .Info ("CSI driver is not ready" )
162+ }
141163 select {
142164 case <- ctx .Done ():
143165 return ctx .Err ()
144166 case <- ticker .C :
145- logger .Info ("Probing CSI driver for readiness" )
146- ready , err := probeOnce (ctx , conn , singleProbeTimeout )
147- if err != nil {
148- st , ok := status .FromError (err )
149- if ! ok {
150- // This is not gRPC error. The probe must have failed before gRPC
151- // method was called, otherwise we would get gRPC error.
152- return fmt .Errorf ("CSI driver probe failed: %s" , err )
153- }
154- if st .Code () != codes .DeadlineExceeded {
155- return fmt .Errorf ("CSI driver probe failed: %s" , err )
156- }
157- // Timeout -> driver is not ready. Fall through to sleep() below.
158- logger .Info ("CSI driver probe timed out" )
159- } else {
160- if ready {
161- return nil
162- }
163- logger .Info ("CSI driver is not ready" )
164- }
167+ continue
165168 }
166169 }
167170}
0 commit comments