Merge pull request #104503 from sanposhiho/scheduler/fix/panic-is-not-execute-defer-funcs

cmd/kube-scheduler: return error instead of os.Exit when something goes wrong
This commit is contained in:
Kubernetes Prow Robot 2021-08-26 11:26:21 -07:00 committed by GitHub
commit d0f6983d6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 6 deletions

View File

@ -79,16 +79,17 @@ suitable Node. Multiple different schedulers may be used within a cluster;
kube-scheduler is the reference implementation. kube-scheduler is the reference implementation.
See [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/) See [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/)
for more information about scheduling and the kube-scheduler component.`, for more information about scheduling and the kube-scheduler component.`,
Run: func(cmd *cobra.Command, args []string) { RunE: func(cmd *cobra.Command, args []string) error {
if err := opts.Complete(&namedFlagSets); err != nil { if err := opts.Complete(&namedFlagSets); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err) return err
os.Exit(1)
} }
if err := runCommand(cmd, opts, registryOptions...); err != nil { if err := runCommand(cmd, opts, registryOptions...); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err) return err
os.Exit(1)
} }
return nil
}, },
SilenceErrors: true,
SilenceUsage: true,
Args: func(cmd *cobra.Command, args []string) error { Args: func(cmd *cobra.Command, args []string) error {
for _, arg := range args { for _, arg := range args {
if len(arg) > 0 { if len(arg) > 0 {

View File

@ -17,6 +17,7 @@ limitations under the License.
package main package main
import ( import (
"fmt"
"math/rand" "math/rand"
"os" "os"
"time" "time"
@ -32,6 +33,13 @@ import (
) )
func main() { func main() {
if err := runSchedulerCmd(); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
}
}
func runSchedulerCmd() error {
rand.Seed(time.Now().UnixNano()) rand.Seed(time.Now().UnixNano())
pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc) pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
@ -42,6 +50,8 @@ func main() {
defer logs.FlushLogs() defer logs.FlushLogs()
if err := command.Execute(); err != nil { if err := command.Execute(); err != nil {
os.Exit(1) return err
} }
return nil
} }