mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-20 20:22:46 +00:00
wait for docker container removal
This commit is contained in:
parent
a8a35fc259
commit
85ce9c1270
@ -3,6 +3,9 @@ package worker
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/codeskyblue/go-sh"
|
||||
)
|
||||
|
||||
type dockerHook struct {
|
||||
@ -60,6 +63,27 @@ func (d *dockerHook) postExec() error {
|
||||
// sh.Command(
|
||||
// "docker", "rm", "-f", d.Name(),
|
||||
// ).Run()
|
||||
name := d.Name()
|
||||
retry := 10
|
||||
for ; retry > 0; retry-- {
|
||||
out, err := sh.Command(
|
||||
"docker", "ps", "-a",
|
||||
"--filter", "name=^"+name+"$",
|
||||
"--format", "{{.Status}}",
|
||||
).Output()
|
||||
if err != nil {
|
||||
logger.Errorf("docker ps failed: %v", err)
|
||||
break
|
||||
}
|
||||
if len(out) == 0 {
|
||||
break
|
||||
}
|
||||
logger.Debugf("container %s still exists: '%s'", name, string(out))
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
if retry == 0 {
|
||||
logger.Warningf("container %s not removed automatically, next sync may fail", name)
|
||||
}
|
||||
d.provider.ExitContext()
|
||||
return nil
|
||||
}
|
||||
|
@ -94,22 +94,27 @@ sleep 20
|
||||
}
|
||||
exitedErr <- err
|
||||
}()
|
||||
cmdRun("ps", []string{"aux"})
|
||||
|
||||
// Wait for docker running
|
||||
time.Sleep(8 * time.Second)
|
||||
|
||||
cmdRun("ps", []string{"aux"})
|
||||
for wait := 0; wait < 8; wait++ {
|
||||
names, err := getDockerByName(d.Name())
|
||||
So(err, ShouldBeNil)
|
||||
if names != "" {
|
||||
break
|
||||
}
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
// cmdRun("ps", []string{"aux"})
|
||||
|
||||
// assert container running
|
||||
names, err := getDockerByName(d.Name())
|
||||
So(err, ShouldBeNil)
|
||||
// So(names, ShouldEqual, d.Name()+"\n")
|
||||
So(names, ShouldEqual, d.Name()+"\n")
|
||||
|
||||
err = provider.Terminate()
|
||||
// So(err, ShouldBeNil)
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
cmdRun("ps", []string{"aux"})
|
||||
// cmdRun("ps", []string{"aux"})
|
||||
<-exitedErr
|
||||
|
||||
// container should be terminated and removed
|
||||
|
Loading…
x
Reference in New Issue
Block a user