Skip to content

Commit 558f97f

Browse files
fsaminyesnault
authored andcommitted
feat(hatchery/swarm): get register error from docker (#3654)
1 parent 8db52b8 commit 558f97f

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

engine/hatchery/swarm/swarm_util_kill.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package swarm
22

33
import (
4+
"fmt"
5+
"io/ioutil"
46
"strconv"
57
"strings"
68
"time"
@@ -37,11 +39,36 @@ func (h *HatcherySwarm) killAndRemove(dockerClient *dockerClient, ID string) err
3739
log.Error("hatchery> swarm> killAndRemove> unable to get model from registering container %s", container.Name)
3840
} else {
3941
if err := hatchery.CheckWorkerModelRegister(h, modelID); err != nil {
42+
ctx, cancel := context.WithTimeout(context.Background(), time.Minute*2)
43+
defer cancel()
44+
logsOpts := types.ContainerLogsOptions{
45+
Details: true,
46+
ShowStderr: true,
47+
ShowStdout: true,
48+
Timestamps: true,
49+
Since: "10s",
50+
}
4051
var spawnErr = sdk.SpawnErrorForm{
4152
Error: err.Error(),
4253
}
54+
55+
logsReader, errL := dockerClient.ContainerLogs(ctx, container.ID, logsOpts)
56+
if errL != nil {
57+
log.Error("hatchery> swarm> killAndRemove> cannot get logs from docker for containers service %s %v : %v", container.ID, container.Name, errL)
58+
spawnErr.Logs = []byte(fmt.Sprintf("unable to get container logs: %v", errL))
59+
60+
} else if logsReader != nil {
61+
defer logsReader.Close()
62+
logs, errR := ioutil.ReadAll(logsReader)
63+
if errR != nil {
64+
log.Error("hatchery> swarm> killAndRemove> cannot read logs for containers service %s %v : %v", container.ID, container.Name, errR)
65+
} else if logs != nil {
66+
spawnErr.Logs = logs
67+
}
68+
}
69+
4370
if err := h.CDSClient().WorkerModelSpawnError(modelID, spawnErr); err != nil {
44-
log.Error("CheckWorkerModelRegister> error on call client.WorkerModelSpawnError on worker model %d for register: %s", modelID, err)
71+
log.Error("hatchery> swarm> killAndRemove> error on call client.WorkerModelSpawnError on worker model %d for register: %s", modelID, err)
4572
}
4673
}
4774
}

0 commit comments

Comments
 (0)