From dedeb622c6d068770fa54ccd723a1b1f74a410a8 Mon Sep 17 00:00:00 2001 From: akartasov Date: Thu, 17 Aug 2023 16:15:32 +0700 Subject: [PATCH 1/2] fix: init provisioner after starting API server --- engine/cmd/database-lab/main.go | 61 ++++++++++++++----------- engine/internal/cloning/base.go | 4 +- engine/internal/provision/mode_local.go | 4 -- 3 files changed, 36 insertions(+), 33 deletions(-) diff --git a/engine/cmd/database-lab/main.go b/engine/cmd/database-lab/main.go index 9e2919f39..82572e3d2 100644 --- a/engine/cmd/database-lab/main.go +++ b/engine/cmd/database-lab/main.go @@ -156,27 +156,9 @@ func main() { } obs := observer.NewObserver(docker, &cfg.Observer, pm) - - go removeObservingClones(observingChan, obs) - - systemMetrics := billing.GetSystemMetrics(pm) - - tm.SendEvent(ctx, telemetry.EngineStartedEvent, telemetry.EngineStarted{ - EngineVersion: version.GetVersion(), - DBEngine: cfg.Global.Engine, - DBVersion: provisioner.DetectDBVersion(), - Pools: pm.CollectPoolStat(), - Restore: retrievalSvc.ReportState(), - System: systemMetrics, - }) - billingSvc := billing.New(platformSvc.Client, &engProps, pm) - if err := billingSvc.RegisterInstance(ctx, systemMetrics); err != nil { - log.Msg("Skip registering instance:", err) - } - - log.Msg("DLE Edition:", engProps.GetEdition()) + go removeObservingClones(observingChan, obs) embeddedUI := embeddedui.New(cfg.EmbeddedUI, engProps, runner, docker) @@ -201,12 +183,6 @@ func main() { server := srv.NewServer(&cfg.Server, &cfg.Global, &engProps, docker, cloningSvc, provisioner, retrievalSvc, platformSvc, billingSvc, obs, pm, tm, tokenHolder, logFilter, embeddedUI, reloadConfigFn) - shutdownCh := setShutdownListener() - - go setReloadListener(ctx, engProps, provisioner, billingSvc, - retrievalSvc, pm, cloningSvc, platformSvc, - embeddedUI, server, - logCleaner, logFilter) server.InitHandlers() @@ -216,8 +192,6 @@ func main() { } }() - go billingSvc.CollectUsage(ctx, systemMetrics) - if cfg.EmbeddedUI.Enabled { go func() { if err := embeddedUI.Run(ctx); err != nil { @@ -227,6 +201,39 @@ func main() { }() } + if err := provisioner.Init(); err != nil { + log.Err(err) + emergencyShutdown() + + return + } + + systemMetrics := billing.GetSystemMetrics(pm) + + tm.SendEvent(ctx, telemetry.EngineStartedEvent, telemetry.EngineStarted{ + EngineVersion: version.GetVersion(), + DBEngine: cfg.Global.Engine, + DBVersion: provisioner.DetectDBVersion(), + Pools: pm.CollectPoolStat(), + Restore: retrievalSvc.ReportState(), + System: systemMetrics, + }) + + if err := billingSvc.RegisterInstance(ctx, systemMetrics); err != nil { + log.Msg("Skip registering instance:", err) + } + + log.Msg("DLE Edition:", engProps.GetEdition()) + + shutdownCh := setShutdownListener() + + go setReloadListener(ctx, engProps, provisioner, billingSvc, + retrievalSvc, pm, cloningSvc, platformSvc, + embeddedUI, server, + logCleaner, logFilter) + + go billingSvc.CollectUsage(ctx, systemMetrics) + if err := retrievalSvc.Run(ctx); err != nil { log.Err("Failed to run the data retrieval service:", err) log.Msg(contactSupport) diff --git a/engine/internal/cloning/base.go b/engine/internal/cloning/base.go index b643f7626..0a69a9aaa 100644 --- a/engine/internal/cloning/base.go +++ b/engine/internal/cloning/base.go @@ -74,8 +74,8 @@ func (c *Base) Reload(cfg Config) { // Run initializes and runs cloning component. func (c *Base) Run(ctx context.Context) error { - if err := c.provision.Init(); err != nil { - return errors.Wrap(err, "failed to run cloning service") + if err := c.provision.RevisePortPool(); err != nil { + return fmt.Errorf("failed to revise port pool: %w", err) } if _, err := c.GetSnapshots(); err != nil { diff --git a/engine/internal/provision/mode_local.go b/engine/internal/provision/mode_local.go index 922318fc0..befee0f47 100644 --- a/engine/internal/provision/mode_local.go +++ b/engine/internal/provision/mode_local.go @@ -128,10 +128,6 @@ func isValidConfigModeLocal(config Config) error { // Init inits provision. func (p *Provisioner) Init() error { - if err := p.RevisePortPool(); err != nil { - return fmt.Errorf("failed to revise port pool: %w", err) - } - if err := docker.PrepareImage(p.ctx, p.dockerClient, p.config.DockerImage); err != nil { return fmt.Errorf("cannot prepare docker image %s: %w", p.config.DockerImage, err) } -- GitLab From 080d4461fa7cc6d62cc6ebd0af3c4e3df40ad980 Mon Sep 17 00:00:00 2001 From: Nikolay Samokhvalov Date: Thu, 31 Aug 2023 02:14:27 +0000 Subject: [PATCH 2/2] Apply 1 suggestion(s) to 1 file(s) --- engine/cmd/database-lab/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/cmd/database-lab/main.go b/engine/cmd/database-lab/main.go index 82572e3d2..bd90ef522 100644 --- a/engine/cmd/database-lab/main.go +++ b/engine/cmd/database-lab/main.go @@ -223,7 +223,7 @@ func main() { log.Msg("Skip registering instance:", err) } - log.Msg("DLE Edition:", engProps.GetEdition()) + log.Msg("DBLab Edition:", engProps.GetEdition()) shutdownCh := setShutdownListener() -- GitLab