Fixed race when down with multiple containers for one service

Signed-off-by: Guillaume Tardif <guillaume.tardif@gmail.com>
This commit is contained in:
Guillaume Tardif 2020-12-17 10:31:47 +01:00
parent 32d5644937
commit dc211b178a
1 changed files with 4 additions and 3 deletions

View File

@ -91,16 +91,17 @@ func (s *composeService) Down(ctx context.Context, projectName string, options c
func (s *composeService) removeContainers(ctx context.Context, w progress.Writer, eg *errgroup.Group, containers []moby.Container) error {
for _, container := range containers {
toDelete := container
eg.Go(func() error {
eventName := "Container " + getContainerName(container)
eventName := "Container " + getContainerName(toDelete)
w.Event(progress.StoppingEvent(eventName))
err := s.apiClient.ContainerStop(ctx, container.ID, nil)
err := s.apiClient.ContainerStop(ctx, toDelete.ID, nil)
if err != nil {
w.Event(progress.ErrorMessageEvent(eventName, "Error while Stopping"))
return err
}
w.Event(progress.RemovingEvent(eventName))
err = s.apiClient.ContainerRemove(ctx, container.ID, moby.ContainerRemoveOptions{})
err = s.apiClient.ContainerRemove(ctx, toDelete.ID, moby.ContainerRemoveOptions{})
if err != nil {
w.Event(progress.ErrorMessageEvent(eventName, "Error while Removing"))
return err