Background Services: Add wrapper to support startup order (#110225)

This commit is contained in:
Todd Treece
2025-09-10 09:06:25 +01:00
committed by GitHub
parent 60d26ac0ce
commit 7c242eeaef
17 changed files with 790 additions and 36 deletions
+23 -5
View File
@@ -26,8 +26,9 @@ var _ Manager = (*service)(nil)
// service manages the registration and lifecycle of modules.
type service struct {
log log.Logger
targets []string
log log.Logger
targets []string
dependencyMap map[string][]string
moduleManager *modules.Manager
serviceManager *services.Manager
@@ -40,19 +41,36 @@ func New(
logger := log.New("modules")
return &service{
log: logger,
targets: targets,
log: logger,
targets: targets,
dependencyMap: dependencyMap,
moduleManager: modules.NewManager(logger),
serviceMap: map[string]services.Service{},
}
}
func NewWithManager(
logger log.Logger,
targets []string,
manager *modules.Manager,
dependencyMap map[string][]string,
) *service {
return &service{
log: logger,
targets: targets,
dependencyMap: dependencyMap,
moduleManager: manager,
serviceMap: map[string]services.Service{},
}
}
// Run starts all registered modules.
func (m *service) Run(ctx context.Context) error {
var err error
for mod, targets := range dependencyMap {
for mod, targets := range m.dependencyMap {
if !m.moduleManager.IsModuleRegistered(mod) {
continue
}