Merge branch 'gc-advens-fix-496' into launch
This commit is contained in:
@@ -41,7 +41,8 @@ HTTP_PROXY=
|
|||||||
HTTPS_PROXY=
|
HTTPS_PROXY=
|
||||||
SHUFFLE_PASS_WORKER_PROXY=TRUE
|
SHUFFLE_PASS_WORKER_PROXY=TRUE
|
||||||
SHUFFLE_PASS_APP_PROXY=FALSE
|
SHUFFLE_PASS_APP_PROXY=FALSE
|
||||||
TZ=Europe/Amsterdam #Timezone-handler in Orborus, Worker and Apps
|
TZ=Europe/Amsterdam # Timezone-handler in Orborus, Worker and Apps
|
||||||
|
ORBORUS_CONTAINER_NAME= # Used to FIND the containername. cgroup v2: issue 501
|
||||||
|
|
||||||
SHUFFLE_BASE_IMAGE_REGISTRY=ghcr.io
|
SHUFFLE_BASE_IMAGE_REGISTRY=ghcr.io
|
||||||
SHUFFLE_BASE_IMAGE_NAME=frikky
|
SHUFFLE_BASE_IMAGE_NAME=frikky
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
NAME=shuffle-orborus
|
NAME=shuffle-orborus
|
||||||
VERSION=0.9.10
|
VERSION=0.9.14
|
||||||
|
|
||||||
echo "Running docker build with $NAME:$VERSION"
|
echo "Running docker build with $NAME:$VERSION"
|
||||||
#docker rmi frikky/shuffle:$NAME --force
|
#docker rmi frikky/shuffle:$NAME --force
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ var dockerApiVersion = os.Getenv("DOCKER_API_VERSION")
|
|||||||
var runningMode = strings.ToLower(os.Getenv("RUNNING_MODE"))
|
var runningMode = strings.ToLower(os.Getenv("RUNNING_MODE"))
|
||||||
var cleanupEnv = strings.ToLower(os.Getenv("CLEANUP"))
|
var cleanupEnv = strings.ToLower(os.Getenv("CLEANUP"))
|
||||||
var timezone = os.Getenv("TZ")
|
var timezone = os.Getenv("TZ")
|
||||||
|
var containerName = os.Getenv("ORBORUS_CONTAINER_NAME")
|
||||||
var executionIds = []string{}
|
var executionIds = []string{}
|
||||||
|
|
||||||
var dockercli *dockerclient.Client
|
var dockercli *dockerclient.Client
|
||||||
@@ -101,19 +102,26 @@ func getThisContainerId() {
|
|||||||
if err == nil {
|
if err == nil {
|
||||||
containerId = strings.TrimSpace(string(out))
|
containerId = strings.TrimSpace(string(out))
|
||||||
|
|
||||||
// cgroup error. Hardcoding this.
|
// cgroup error. Use fallback strategy below.
|
||||||
// https://github.com/moby/moby/issues/7015
|
// https://github.com/moby/moby/issues/7015
|
||||||
//log.Printf("Checking if %s is in %s", ".scope", string(out))
|
//log.Printf("Checking if %s is in %s", ".scope", string(out))
|
||||||
if strings.Contains(string(out), ".scope") {
|
if strings.Contains(string(out), ".scope") {
|
||||||
containerId = "shuffle-orborus"
|
containerId = ""
|
||||||
//docker-76c537e9a4b7c7233011f5d70e6b7f2d600b6413ac58a96519b8dca7a3f7117a.scope
|
//docker-76c537e9a4b7c7233011f5d70e6b7f2d600b6413ac58a96519b8dca7a3f7117a.scope
|
||||||
}
|
}
|
||||||
} else {
|
} 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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf(`[INFO] Started with containerId "%s"`, containerId)
|
log.Printf(`[INFO] Started with containerId "%s"`, containerId)
|
||||||
@@ -137,14 +145,7 @@ func deployWorker(image string, identifier string, env []string) {
|
|||||||
Binds: []string{
|
Binds: []string{
|
||||||
"/var/run/docker.sock:/var/run/docker.sock:rw",
|
"/var/run/docker.sock:/var/run/docker.sock:rw",
|
||||||
},
|
},
|
||||||
}
|
NetworkMode: container.NetworkMode(fmt.Sprintf("container:%s", containerId)),
|
||||||
|
|
||||||
// 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")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if cleanupEnv == "true" {
|
if cleanupEnv == "true" {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
NAME=shuffle-worker
|
NAME=shuffle-worker
|
||||||
VERSION=0.9.13
|
VERSION=0.9.14
|
||||||
|
|
||||||
echo "Running docker build with $NAME:$VERSION"
|
echo "Running docker build with $NAME:$VERSION"
|
||||||
#CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker.bin .
|
#CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o worker.bin .
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import (
|
|||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -42,7 +41,6 @@ var cleanupEnv = strings.ToLower(os.Getenv("CLEANUP"))
|
|||||||
var timezone = os.Getenv("TZ")
|
var timezone = os.Getenv("TZ")
|
||||||
var baseimagename = "frikky/shuffle"
|
var baseimagename = "frikky/shuffle"
|
||||||
var registryName = "registry.hub.docker.com"
|
var registryName = "registry.hub.docker.com"
|
||||||
var fallbackName = "shuffle-orborus"
|
|
||||||
var sleepTime = 2
|
var sleepTime = 2
|
||||||
var requestCache *cache.Cache
|
var requestCache *cache.Cache
|
||||||
var topClient *http.Client
|
var topClient *http.Client
|
||||||
@@ -61,38 +59,6 @@ var startAction string
|
|||||||
var results []shuffle.ActionResult
|
var results []shuffle.ActionResult
|
||||||
var allLogs map[string]string
|
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)
|
// removes every container except itself (worker)
|
||||||
func shutdown(workflowExecution shuffle.WorkflowExecution, nodeId string, reason string, handleResultSend bool) {
|
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)
|
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{},
|
Config: map[string]string{},
|
||||||
},
|
},
|
||||||
Resources: container.Resources{},
|
Resources: container.Resources{},
|
||||||
}
|
NetworkMode: container.NetworkMode(fmt.Sprintf("container:worker-%s", workflowExecution.ExecutionId)),
|
||||||
|
|
||||||
// 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")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Removing because log extraction should happen first
|
// Removing because log extraction should happen first
|
||||||
|
|||||||
Reference in New Issue
Block a user