Merge branch 'fix-496' of https://github.com/gc-advens/Shuffle into gc-advens-fix-496
This commit is contained in:
@@ -56,6 +56,7 @@ var dockerApiVersion = os.Getenv("DOCKER_API_VERSION")
|
||||
var runningMode = strings.ToLower(os.Getenv("RUNNING_MODE"))
|
||||
var cleanupEnv = strings.ToLower(os.Getenv("CLEANUP"))
|
||||
var timezone = os.Getenv("TZ")
|
||||
var containerName = os.Getenv("CONTAINER_NAME")
|
||||
var executionIds = []string{}
|
||||
|
||||
var dockercli *dockerclient.Client
|
||||
@@ -101,18 +102,25 @@ func getThisContainerId() {
|
||||
if err == nil {
|
||||
containerId = strings.TrimSpace(string(out))
|
||||
|
||||
// cgroup error. Hardcoding this.
|
||||
// cgroup error. Use fallback strategy below.
|
||||
// https://github.com/moby/moby/issues/7015
|
||||
//log.Printf("Checking if %s is in %s", ".scope", string(out))
|
||||
if strings.Contains(string(out), ".scope") {
|
||||
containerId = "shuffle-orborus"
|
||||
containerId = ""
|
||||
//docker-76c537e9a4b7c7233011f5d70e6b7f2d600b6413ac58a96519b8dca7a3f7117a.scope
|
||||
}
|
||||
} else {
|
||||
if fCol == "0" {
|
||||
containerId = "shuffle-orborus"
|
||||
log.Printf("[WARNING] Failed getting container ID: %s", err)
|
||||
}
|
||||
log.Printf("[WARNING] Failed getting container ID: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
if containerId == "" {
|
||||
if containerName != "" {
|
||||
containerId = containerName
|
||||
log.Printf("[INFO] Falling back to CONTAINER_NAME as container ID")
|
||||
} else {
|
||||
containerId = "shuffle-orborus"
|
||||
log.Printf(`[WARNING] CONTAINER_NAME is not set. Falling back to default name "%s" as container ID`, containerId)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,14 +145,7 @@ func deployWorker(image string, identifier string, env []string) {
|
||||
Binds: []string{
|
||||
"/var/run/docker.sock:/var/run/docker.sock:rw",
|
||||
},
|
||||
}
|
||||
|
||||
// form container id and use it as network source if it's not empty
|
||||
if containerId != "" {
|
||||
//log.Printf("[INFO] Found container ID %s", containerId)
|
||||
hostConfig.NetworkMode = container.NetworkMode(fmt.Sprintf("container:%s", containerId))
|
||||
} else {
|
||||
//log.Printf("[INFO] Empty self container id, continue without NetworkMode")
|
||||
NetworkMode: container.NetworkMode(fmt.Sprintf("container:%s", containerId)),
|
||||
}
|
||||
|
||||
if cleanupEnv == "true" {
|
||||
|
||||
@@ -16,7 +16,6 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -42,7 +41,6 @@ var cleanupEnv = strings.ToLower(os.Getenv("CLEANUP"))
|
||||
var timezone = os.Getenv("TZ")
|
||||
var baseimagename = "frikky/shuffle"
|
||||
var registryName = "registry.hub.docker.com"
|
||||
var fallbackName = "shuffle-orborus"
|
||||
var sleepTime = 2
|
||||
var requestCache *cache.Cache
|
||||
var topClient *http.Client
|
||||
@@ -61,38 +59,6 @@ var startAction string
|
||||
var results []shuffle.ActionResult
|
||||
var allLogs map[string]string
|
||||
|
||||
var containerId string
|
||||
|
||||
// form container id of current running container
|
||||
func getThisContainerId() string {
|
||||
if len(containerId) > 0 {
|
||||
return containerId
|
||||
}
|
||||
|
||||
id := ""
|
||||
cmd := fmt.Sprintf("cat /proc/self/cgroup | grep memory | tail -1 | cut -d/ -f3 | grep -o -E '[0-9A-z]{64}'")
|
||||
out, err := exec.Command("bash", "-c", cmd).Output()
|
||||
if err == nil {
|
||||
id = strings.TrimSpace(string(out))
|
||||
|
||||
//log.Printf("Checking if %s is in %s", ".scope", string(out))
|
||||
if strings.Contains(string(out), ".scope") {
|
||||
id = fallbackName
|
||||
}
|
||||
}
|
||||
|
||||
return id
|
||||
}
|
||||
|
||||
func init() {
|
||||
containerId = getThisContainerId()
|
||||
if len(containerId) == 0 {
|
||||
log.Printf("[WARNING] No container ID found. Not running containerized? This should only show during testing")
|
||||
} else {
|
||||
log.Printf("[INFO] Found container ID for this worker: %s", containerId)
|
||||
}
|
||||
}
|
||||
|
||||
// removes every container except itself (worker)
|
||||
func shutdown(workflowExecution shuffle.WorkflowExecution, nodeId string, reason string, handleResultSend bool) {
|
||||
log.Printf("[INFO] Shutdown (%s) started with reason %#v. Result amount: %d. ResultsSent: %d, Send result: %#v", workflowExecution.Status, reason, len(workflowExecution.Results), requestsSent, handleResultSend)
|
||||
@@ -221,14 +187,7 @@ func deployApp(cli *dockerclient.Client, image string, identifier string, env []
|
||||
Config: map[string]string{},
|
||||
},
|
||||
Resources: container.Resources{},
|
||||
}
|
||||
|
||||
// form container id and use it as network source if it's not empty
|
||||
containerId = getThisContainerId()
|
||||
if containerId != "" {
|
||||
hostConfig.NetworkMode = container.NetworkMode(fmt.Sprintf("container:%s", containerId))
|
||||
} else {
|
||||
log.Printf("[WARNING] Empty self container id, continue without NetworkMode")
|
||||
NetworkMode: container.NetworkMode(fmt.Sprintf("container:worker-%s", workflowExecution.ExecutionId)),
|
||||
}
|
||||
|
||||
// Removing because log extraction should happen first
|
||||
|
||||
Reference in New Issue
Block a user