Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit eb4f5a4

Browse files
committed
Merge branch '309-run-without-pools' into 'master'
feat: start DLE and Local UI even if no data pool available (#309) See merge request postgres-ai/database-lab!393
2 parents ad697bb + 042022e commit eb4f5a4

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
lines changed

‎cmd/database-lab/main.go‎

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,6 @@ func main() {
8181

8282
runner := runners.NewLocalRunner(cfg.Provision.UseSudo)
8383

84-
pm := pool.NewPoolManager(&cfg.PoolManager, runner)
85-
if err = pm.ReloadPools(); err != nil {
86-
log.Err(err.Error())
87-
return
88-
}
89-
9084
internalNetworkID, err := networks.Setup(ctx, docker, engProps.InstanceID, engProps.ContainerName)
9185
if err != nil {
9286
log.Errf(err.Error())
@@ -107,21 +101,17 @@ func main() {
107101
DBName: cfg.Global.Database.Name(),
108102
}
109103

110-
emergencyShutdown := func() {
111-
cancel()
112-
113-
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), shutdownTimeout)
114-
defer shutdownCancel()
115-
116-
shutdownDatabaseLabEngine(shutdownCtx, docker, engProps, pm.First().Pool())
117-
}
118-
119104
tm, err := telemetry.New(cfg.Global, engProps)
120105
if err != nil {
121106
log.Errf(errors.WithMessage(err, "failed to initialize a telemetry service").Error())
122107
return
123108
}
124109

110+
pm := pool.NewPoolManager(&cfg.PoolManager, runner)
111+
if err = pm.ReloadPools(); err != nil {
112+
log.Err(err.Error())
113+
}
114+
125115
// Create a new retrieval service to prepare a data directory and start snapshotting.
126116
retrievalSvc := retrieval.New(cfg, engProps, docker, pm, tm, runner)
127117

@@ -133,6 +123,15 @@ func main() {
133123

134124
observingChan := make(chan string, 1)
135125

126+
emergencyShutdown := func() {
127+
cancel()
128+
129+
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), shutdownTimeout)
130+
defer shutdownCancel()
131+
132+
shutdownDatabaseLabEngine(shutdownCtx, docker, engProps, pm.First())
133+
}
134+
136135
cloningSvc := cloning.NewBase(&cfg.Cloning, provisioner, tm, observingChan)
137136
if err = cloningSvc.Run(ctx); err != nil {
138137
log.Err(err)
@@ -193,7 +192,7 @@ func main() {
193192
log.Msg(err)
194193
}
195194

196-
shutdownDatabaseLabEngine(shutdownCtx, docker, engProps, pm.First().Pool())
195+
shutdownDatabaseLabEngine(shutdownCtx, docker, engProps, pm.First())
197196
cloningSvc.SaveClonesState()
198197
tm.SendEvent(context.Background(), telemetry.EngineStoppedEvent, telemetry.EngineStopped{Uptime: server.Uptime()})
199198
}
@@ -292,11 +291,13 @@ func setShutdownListener() chan os.Signal {
292291
return c
293292
}
294293

295-
func shutdownDatabaseLabEngine(ctx context.Context, dockerCLI *client.Client, engProps global.EngineProps, fsp*resources.Pool) {
294+
func shutdownDatabaseLabEngine(ctx context.Context, dockerCLI *client.Client, engProps global.EngineProps, fsm pool.FSManager) {
296295
log.Msg("Stopping auxiliary containers")
297296

298-
if err := cont.StopControlContainers(ctx, dockerCLI, engProps.InstanceID, fsp.DataDir()); err != nil {
299-
log.Err("Failed to stop control containers", err)
297+
if fsm != nil {
298+
if err := cont.StopControlContainers(ctx, dockerCLI, engProps.InstanceID, fsm.Pool().DataDir()); err != nil {
299+
log.Err("Failed to stop control containers", err)
300+
}
300301
}
301302

302303
if err := cont.CleanUpSatelliteContainers(ctx, dockerCLI, engProps.InstanceID); err != nil {

‎internal/provision/mode_local.go‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
const (
4040
maxNumberOfPortsToCheck = 5
4141
portCheckingTimeout = 3 * time.Second
42+
unknownVersion = "unknown"
4243
)
4344

4445
// PortPool describes an available port range for clones.
@@ -723,7 +724,12 @@ func (p *Provisioner) StartCloneContainer(ctx context.Context, containerName str
723724

724725
// DetectDBVersion detects version of the database.
725726
func (p *Provisioner) DetectDBVersion() string {
726-
pgVersion, err := tools.DetectPGVersion(p.pm.First().Pool().DataDir())
727+
fsManager := p.pm.First()
728+
if fsManager == nil {
729+
return unknownVersion
730+
}
731+
732+
pgVersion, err := tools.DetectPGVersion(fsManager.Pool().DataDir())
727733
if err != nil {
728734
return parseImageVersion(p.config.DockerImage)
729735
}

‎internal/retrieval/retrieval.go‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ func (r *Retrieval) Run(ctx context.Context) error {
137137
Level: models.RefreshFailed,
138138
Message: "Pool to perform data refresh not found",
139139
}
140+
r.State.Status = models.Failed
140141
r.State.addAlert(alert)
141142
r.tm.SendEvent(ctx, telemetry.AlertEvent, alert)
142143

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /