fix: add 20s timeout to driver.Status()
							parent
							
								
									12f5db0553
								
							
						
					
					
						commit
						61b69e13f8
					
				| 
						 | 
				
			
			@ -23,6 +23,7 @@ import (
 | 
			
		|||
	"sort"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"golang.org/x/text/cases"
 | 
			
		||||
	"golang.org/x/text/language"
 | 
			
		||||
| 
						 | 
				
			
			@ -354,12 +355,25 @@ func Suggest(options []registry.DriverState) (registry.DriverState, []registry.D
 | 
			
		|||
// Status returns the status of a driver
 | 
			
		||||
func Status(name string) registry.DriverState {
 | 
			
		||||
	d := registry.Driver(name)
 | 
			
		||||
	return registry.DriverState{
 | 
			
		||||
		Name:     d.Name,
 | 
			
		||||
		Default:  d.Default,
 | 
			
		||||
		Priority: d.Priority,
 | 
			
		||||
		State:    registry.Status(name),
 | 
			
		||||
	stateChannel := make(chan registry.State)
 | 
			
		||||
	timeoutChannel := time.After(20 * time.Second)
 | 
			
		||||
	go func() {
 | 
			
		||||
		stateChannel <- registry.Status(name)
 | 
			
		||||
	}()
 | 
			
		||||
	select {
 | 
			
		||||
	case s := <-stateChannel:
 | 
			
		||||
		return registry.DriverState{
 | 
			
		||||
			Name:     d.Name,
 | 
			
		||||
			Default:  d.Default,
 | 
			
		||||
			Priority: d.Priority,
 | 
			
		||||
			State:    s,
 | 
			
		||||
		}
 | 
			
		||||
	case <-timeoutChannel:
 | 
			
		||||
		klog.Infof("time out when checking for status of %s driver", name)
 | 
			
		||||
		return registry.DriverState{}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IsAlias checks if an alias belongs to provided driver by name.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@ import (
 | 
			
		|||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"sort"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/klog/v2"
 | 
			
		||||
	"k8s.io/minikube/pkg/minikube/translate"
 | 
			
		||||
| 
						 | 
				
			
			@ -118,7 +119,17 @@ func Available(vm bool) []DriverState {
 | 
			
		|||
			klog.Errorf("%q does not implement Status", d.Name)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		s := d.Status()
 | 
			
		||||
		stateChannel := make(chan State)
 | 
			
		||||
		timeoutChannel := time.After(20 * time.Second)
 | 
			
		||||
		go func() {
 | 
			
		||||
			stateChannel <- d.Status()
 | 
			
		||||
		}()
 | 
			
		||||
		s := State{}
 | 
			
		||||
		select {
 | 
			
		||||
		case <-timeoutChannel:
 | 
			
		||||
			klog.Infof("%s status check timeout!", d.Name)
 | 
			
		||||
		case s = <-stateChannel:
 | 
			
		||||
		}
 | 
			
		||||
		klog.Infof("%s default: %v priority: %d, state: %+v", d.Name, d.Default, d.Priority, s)
 | 
			
		||||
 | 
			
		||||
		preference := d.Priority
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue