mirror of
https://github.com/k3s-io/k3s.git
synced 2024-06-07 19:41:36 +00:00
Adding support for waitgroup to the Startuphooks (#3654)
The startup hooks where executing after the deploy controller. We needed the deploy controller to wait until the startup hooks had completed.
This commit is contained in:
parent
ad28d18b19
commit
aef8a6aafd
@ -2,6 +2,7 @@ package cmds
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"github.com/rancher/k3s/pkg/version"
|
||||
"github.com/urfave/cli"
|
||||
@ -63,7 +64,7 @@ type Server struct {
|
||||
ClusterResetRestorePath string
|
||||
EncryptSecrets bool
|
||||
SystemDefaultRegistry string
|
||||
StartupHooks []func(context.Context, <-chan struct{}, string) error
|
||||
StartupHooks []func(context.Context, *sync.WaitGroup, <-chan struct{}, string) error
|
||||
EtcdSnapshotName string
|
||||
EtcdDisableSnapshots bool
|
||||
EtcdExposeMetrics bool
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
@ -69,8 +70,10 @@ func StartServer(ctx context.Context, config *Config) error {
|
||||
go startOnAPIServerReady(ctx, config)
|
||||
}
|
||||
|
||||
config.StartupHooksWg = &sync.WaitGroup{}
|
||||
config.StartupHooksWg.Add(len(config.StartupHooks))
|
||||
for _, hook := range config.StartupHooks {
|
||||
if err := hook(ctx, config.ControlConfig.Runtime.APIServerReady, config.ControlConfig.Runtime.KubeConfigAdmin); err != nil {
|
||||
if err := hook(ctx, config.StartupHooksWg, config.ControlConfig.Runtime.APIServerReady, config.ControlConfig.Runtime.KubeConfigAdmin); err != nil {
|
||||
return errors.Wrap(err, "startup hook")
|
||||
}
|
||||
}
|
||||
@ -111,6 +114,7 @@ func runControllers(ctx context.Context, config *Config) error {
|
||||
return err
|
||||
}
|
||||
|
||||
config.StartupHooksWg.Wait()
|
||||
if err := stageFiles(ctx, sc, controlConfig); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"sync"
|
||||
|
||||
"github.com/rancher/k3s/pkg/daemons/config"
|
||||
)
|
||||
@ -12,7 +13,8 @@ type Config struct {
|
||||
ControlConfig config.Control
|
||||
Rootless bool
|
||||
SupervisorPort int
|
||||
StartupHooks []func(context.Context, <-chan struct{}, string) error
|
||||
StartupHooks []func(context.Context, *sync.WaitGroup, <-chan struct{}, string) error
|
||||
StartupHooksWg *sync.WaitGroup
|
||||
LeaderControllers CustomControllers
|
||||
Controllers CustomControllers
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user