Skip to content

Commit 4666ebd

Browse files
authored
fix: remove swarm api call from restore resource (#193)
Removes a Swarm API call from the PgBackRestRestore resource and uses the spec resource instead to get the service spec. This fixes an issue where restores break on Swarm worker nodes. PLAT-272
1 parent effd347 commit 4666ebd

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

server/internal/orchestrator/swarm/pgbackrest_restore.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,12 +101,17 @@ func (p *PgBackRestRestore) Create(ctx context.Context, rc *resource.Context) er
101101
return handleError(fmt.Errorf("failed to get postgres service resource from state: %w", err))
102102
}
103103

104+
specResource, err := resource.FromContext[*PostgresServiceSpecResource](rc, PostgresServiceSpecResourceIdentifier(p.InstanceID))
105+
if err != nil {
106+
return handleError(fmt.Errorf("failed to get postgres service spec resource from state: %w", err))
107+
}
108+
104109
err = p.stopPostgres(ctx, rc, dockerClient, fs, svcResource)
105110
if err != nil {
106111
return handleError(err)
107112
}
108113

109-
containerID, err := p.runRestoreContainer(ctx, dockerClient, svcResource)
114+
containerID, err := p.runRestoreContainer(ctx, dockerClient, svcResource, specResource)
110115
if err != nil {
111116
return handleError(err)
112117
}
@@ -204,16 +209,13 @@ func (p *PgBackRestRestore) runRestoreContainer(
204209
ctx context.Context,
205210
dockerClient *docker.Docker,
206211
svcResource *PostgresService,
212+
specResource *PostgresServiceSpecResource,
207213
) (string, error) {
208-
swarmService, err := dockerClient.ServiceInspect(ctx, svcResource.ServiceID)
209-
if err != nil {
210-
return "", fmt.Errorf("failed to inspect postgres service: %w", err)
211-
}
212214
var limits swarm.Limit
213-
if swarmService.Spec.TaskTemplate.Resources != nil && swarmService.Spec.TaskTemplate.Resources.Limits != nil {
214-
limits = *swarmService.Spec.TaskTemplate.Resources.Limits
215+
if specResource.Spec.TaskTemplate.Resources != nil && specResource.Spec.TaskTemplate.Resources.Limits != nil {
216+
limits = *specResource.Spec.TaskTemplate.Resources.Limits
215217
}
216-
containerSpec := swarmService.Spec.TaskTemplate.ContainerSpec
218+
containerSpec := specResource.Spec.TaskTemplate.ContainerSpec
217219
restoreOptions := utils.BuildOptionArgs(p.RestoreOptions)
218220
opts := append([]string{"--log-timestamp=n"}, restoreOptions...)
219221
containerID, err := dockerClient.ContainerRun(ctx, docker.ContainerRunOptions{

0 commit comments

Comments
 (0)