mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-20 11:42:43 +00:00
wait for docker container removal
This commit is contained in:
parent
a8a35fc259
commit
85ce9c1270
@ -3,6 +3,9 @@ package worker
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/codeskyblue/go-sh"
|
||||||
)
|
)
|
||||||
|
|
||||||
type dockerHook struct {
|
type dockerHook struct {
|
||||||
@ -60,6 +63,27 @@ func (d *dockerHook) postExec() error {
|
|||||||
// sh.Command(
|
// sh.Command(
|
||||||
// "docker", "rm", "-f", d.Name(),
|
// "docker", "rm", "-f", d.Name(),
|
||||||
// ).Run()
|
// ).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()
|
d.provider.ExitContext()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -94,22 +94,27 @@ sleep 20
|
|||||||
}
|
}
|
||||||
exitedErr <- err
|
exitedErr <- err
|
||||||
}()
|
}()
|
||||||
cmdRun("ps", []string{"aux"})
|
|
||||||
|
|
||||||
// Wait for docker running
|
// Wait for docker running
|
||||||
time.Sleep(8 * time.Second)
|
for wait := 0; wait < 8; wait++ {
|
||||||
|
names, err := getDockerByName(d.Name())
|
||||||
cmdRun("ps", []string{"aux"})
|
So(err, ShouldBeNil)
|
||||||
|
if names != "" {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
}
|
||||||
|
// cmdRun("ps", []string{"aux"})
|
||||||
|
|
||||||
// assert container running
|
// assert container running
|
||||||
names, err := getDockerByName(d.Name())
|
names, err := getDockerByName(d.Name())
|
||||||
So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
// So(names, ShouldEqual, d.Name()+"\n")
|
So(names, ShouldEqual, d.Name()+"\n")
|
||||||
|
|
||||||
err = provider.Terminate()
|
err = provider.Terminate()
|
||||||
// So(err, ShouldBeNil)
|
So(err, ShouldBeNil)
|
||||||
|
|
||||||
cmdRun("ps", []string{"aux"})
|
// cmdRun("ps", []string{"aux"})
|
||||||
<-exitedErr
|
<-exitedErr
|
||||||
|
|
||||||
// container should be terminated and removed
|
// container should be terminated and removed
|
||||||
|
Loading…
x
Reference in New Issue
Block a user