Skip to content

Commit 7932d0f

Browse files
committed
Merge branch 'reorder-startup-services' into 'master'
fix: init provisioner after starting API server See merge request postgres-ai/database-lab!809
2 parents 9e29ee5 + 8ae9d5a commit 7932d0f

File tree

3 files changed

+36
-33
lines changed

3 files changed

+36
-33
lines changed

engine/cmd/database-lab/main.go

+34-27
Original file line numberDiff line numberDiff line change
@@ -156,27 +156,9 @@ func main() {
156156
}
157157

158158
obs := observer.NewObserver(docker, &cfg.Observer, pm)
159-
160-
go removeObservingClones(observingChan, obs)
161-
162-
systemMetrics := billing.GetSystemMetrics(pm)
163-
164-
tm.SendEvent(ctx, telemetry.EngineStartedEvent, telemetry.EngineStarted{
165-
EngineVersion: version.GetVersion(),
166-
DBEngine: cfg.Global.Engine,
167-
DBVersion: provisioner.DetectDBVersion(),
168-
Pools: pm.CollectPoolStat(),
169-
Restore: retrievalSvc.ReportState(),
170-
System: systemMetrics,
171-
})
172-
173159
billingSvc := billing.New(platformSvc.Client, &engProps, pm)
174160

175-
if err := billingSvc.RegisterInstance(ctx, systemMetrics); err != nil {
176-
log.Msg("Skip registering instance:", err)
177-
}
178-
179-
log.Msg("DLE Edition:", engProps.GetEdition())
161+
go removeObservingClones(observingChan, obs)
180162

181163
embeddedUI := embeddedui.New(cfg.EmbeddedUI, engProps, runner, docker)
182164

@@ -201,12 +183,6 @@ func main() {
201183

202184
server := srv.NewServer(&cfg.Server, &cfg.Global, &engProps, docker, cloningSvc, provisioner, retrievalSvc, platformSvc,
203185
billingSvc, obs, pm, tm, tokenHolder, logFilter, embeddedUI, reloadConfigFn)
204-
shutdownCh := setShutdownListener()
205-
206-
go setReloadListener(ctx, engProps, provisioner, billingSvc,
207-
retrievalSvc, pm, cloningSvc, platformSvc,
208-
embeddedUI, server,
209-
logCleaner, logFilter)
210186

211187
server.InitHandlers()
212188

@@ -216,8 +192,6 @@ func main() {
216192
}
217193
}()
218194

219-
go billingSvc.CollectUsage(ctx, systemMetrics)
220-
221195
if cfg.EmbeddedUI.Enabled {
222196
go func() {
223197
if err := embeddedUI.Run(ctx); err != nil {
@@ -227,6 +201,39 @@ func main() {
227201
}()
228202
}
229203

204+
if err := provisioner.Init(); err != nil {
205+
log.Err(err)
206+
emergencyShutdown()
207+
208+
return
209+
}
210+
211+
systemMetrics := billing.GetSystemMetrics(pm)
212+
213+
tm.SendEvent(ctx, telemetry.EngineStartedEvent, telemetry.EngineStarted{
214+
EngineVersion: version.GetVersion(),
215+
DBEngine: cfg.Global.Engine,
216+
DBVersion: provisioner.DetectDBVersion(),
217+
Pools: pm.CollectPoolStat(),
218+
Restore: retrievalSvc.ReportState(),
219+
System: systemMetrics,
220+
})
221+
222+
if err := billingSvc.RegisterInstance(ctx, systemMetrics); err != nil {
223+
log.Msg("Skip registering instance:", err)
224+
}
225+
226+
log.Msg("DBLab Edition:", engProps.GetEdition())
227+
228+
shutdownCh := setShutdownListener()
229+
230+
go setReloadListener(ctx, engProps, provisioner, billingSvc,
231+
retrievalSvc, pm, cloningSvc, platformSvc,
232+
embeddedUI, server,
233+
logCleaner, logFilter)
234+
235+
go billingSvc.CollectUsage(ctx, systemMetrics)
236+
230237
if err := retrievalSvc.Run(ctx); err != nil {
231238
log.Err("Failed to run the data retrieval service:", err)
232239
log.Msg(contactSupport)

engine/internal/cloning/base.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ func (c *Base) Reload(cfg Config) {
7474

7575
// Run initializes and runs cloning component.
7676
func (c *Base) Run(ctx context.Context) error {
77-
if err := c.provision.Init(); err != nil {
78-
return errors.Wrap(err, "failed to run cloning service")
77+
if err := c.provision.RevisePortPool(); err != nil {
78+
return fmt.Errorf("failed to revise port pool: %w", err)
7979
}
8080

8181
if _, err := c.GetSnapshots(); err != nil {

engine/internal/provision/mode_local.go

-4
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,6 @@ func isValidConfigModeLocal(config Config) error {
128128

129129
// Init inits provision.
130130
func (p *Provisioner) Init() error {
131-
if err := p.RevisePortPool(); err != nil {
132-
return fmt.Errorf("failed to revise port pool: %w", err)
133-
}
134-
135131
if err := docker.PrepareImage(p.ctx, p.dockerClient, p.config.DockerImage); err != nil {
136132
return fmt.Errorf("cannot prepare docker image %s: %w", p.config.DockerImage, err)
137133
}

0 commit comments

Comments
 (0)