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.
See [scheduling](https://kubernetes.io/docs/concepts/scheduling-eviction/)
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 {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
return err
}
if err := runCommand(cmd, opts, registryOptions...); err != nil {
fmt.Fprintf(os.Stderr, "%v\n", err)
os.Exit(1)
return err
}
return nil
},
SilenceErrors: true,
SilenceUsage: true,
Args: func(cmd *cobra.Command, args []string) error {
for _, arg := range args {
if len(arg) > 0 {

View File

@ -17,6 +17,7 @@ limitations under the License.
package main
import (
"fmt"
"math/rand"
"os"
"time"
@ -32,6 +33,13 @@ import (
)
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())
pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
@ -42,6 +50,8 @@ func main() {
defer logs.FlushLogs()
if err := command.Execute(); err != nil {
os.Exit(1)
return err
}
return nil
}