mirror of https://github.com/docker/cli.git
docker service rollback: fix non-zero exit code in some cases
Before this change: -------------------------------------------- $ docker service create --replicas=1 --name foo -p 8080:80 nginx:alpine t33qvykv8y0zbz266rxynsbo3 overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged $ echo $? 0 $ docker service update --replicas=5 foo foo overall progress: 5 out of 5 tasks 1/5: running [==================================================>] 2/5: running [==================================================>] 3/5: running [==================================================>] 4/5: running [==================================================>] 5/5: running [==================================================>] verify: Service converged $ echo $? 0 $ docker service rollback foo foo rollback: manually requested rollback overall progress: rolling back update: 1 out of 1 tasks 1/1: running [> ] verify: Service converged $ echo $? 0 $ docker service rollback foo foo service rolled back: rollback completed $ echo $? 1 After this change: -------------------------------------------- $ docker service create --replicas=1 --name foo -p 8080:80 nginx:alpine t33qvykv8y0zbz266rxynsbo3 overall progress: 1 out of 1 tasks 1/1: running [==================================================>] verify: Service converged $ echo $? 0 $ docker service update --replicas=5 foo foo overall progress: 5 out of 5 tasks 1/5: running [==================================================>] 2/5: running [==================================================>] 3/5: running [==================================================>] 4/5: running [==================================================>] 5/5: running [==================================================>] verify: Waiting 1 seconds to verify that tasks are stable... $ echo $? 0 $ docker service rollback foo foo rollback: manually requested rollback overall progress: rolling back update: 1 out of 1 tasks 1/1: running [> ] verify: Service converged $ echo $? 0 $ docker service rollback foo foo service rolled back: rollback completed $ echo $? 0 $ docker service ps foo ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS 4dt4ms4c5qfb foo.1 nginx:alpine docker-desktop Running Running 2 minutes ago Remaining issues with reconciliation -------------------------------------------- Note that both before, and after this change, the command sometimes terminates early, and does not wait for the service to reconcile; this is most apparent when rolling back is scaling up (so more tasks are deployed); $ docker service rollback foo foo service rolled back: rollback completed $ docker service rollback foo foo rollback: manually requested rollback overall progress: rolling back update: 1 out of 5 tasks 1/5: pending [=================================> ] 2/5: running [> ] 3/5: pending [=================================> ] 4/5: pending [=================================> ] 5/5: pending [=================================> ] service rolled back: rollback completed Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
1e54c5d67c
commit
ce26a165b0
|
@ -140,7 +140,8 @@ func ServiceProgress(ctx context.Context, client client.APIClient, serviceID str
|
||||||
return fmt.Errorf("service rollback paused: %s", service.UpdateStatus.Message)
|
return fmt.Errorf("service rollback paused: %s", service.UpdateStatus.Message)
|
||||||
case swarm.UpdateStateRollbackCompleted:
|
case swarm.UpdateStateRollbackCompleted:
|
||||||
if !converged {
|
if !converged {
|
||||||
return fmt.Errorf("service rolled back: %s", service.UpdateStatus.Message)
|
progress.Messagef(progressOut, "", "service rolled back: %s", service.UpdateStatus.Message)
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue