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