Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1.13.x] Merge 1.13.x-next branch into 1.13.x #16

Merged
merged 5 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 66 additions & 23 deletions modules/kogito-dynamic-resources/added/container-limits
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/sh

# Detected container limits
# Detects container limits
# If found these are exposed as the following environment variables:
#
# - CONTAINER_MAX_MEMORY
Expand All @@ -12,6 +11,16 @@ if [ "${SCRIPT_DEBUG}" = "true" ] ; then
set -x
fi

# query the resources based on cgroups version
# cgroups v1 points to tmpfs
# cgroups v2 points to cgroup2fs
CGROUPS_VERSION="v1"
tmp_fs=$(stat -fc %T /sys/fs/cgroup)
if [ "${tmp_fs}" = "cgroup2fs" ]; then
CGROUPS_VERSION="v2"
fi


ceiling() {
awk -vnumber="$1" -vdiv="$2" '
function ceiling(x){
Expand All @@ -23,35 +32,69 @@ ceiling() {
'
}

# Based on the cgroup limits, figure out the max number of core we should utilize
# Based on the cgroups limits, figure out the max number of core we should use
core_limit() {
local cpu_period_file="/sys/fs/cgroup/cpu/cpu.cfs_period_us"
local cpu_quota_file="/sys/fs/cgroup/cpu/cpu.cfs_quota_us"
if [ -r "${cpu_period_file}" ]; then
local cpu_period="$(cat ${cpu_period_file})"

if [ -r "${cpu_quota_file}" ]; then
local cpu_quota="$(cat ${cpu_quota_file})"
# cfs_quota_us == -1 --> no restrictions
if [ "x$cpu_quota" != "x-1" ]; then
ceiling "$cpu_quota" "$cpu_period"
if [ "${CGROUPS_VERSION}" = "v1" ]; then
local cpu_period_file="/sys/fs/cgroup/cpu/cpu.cfs_period_us"
local cpu_quota_file="/sys/fs/cgroup/cpu/cpu.cfs_quota_us"
if [ -r "${cpu_period_file}" ]; then
local cpu_period="$(cat ${cpu_period_file})"
if [ -r "${cpu_quota_file}" ]; then
local cpu_quota="$(cat ${cpu_quota_file})"
# cfs_quota_us == -1 --> no restrictions
if [ "x$cpu_quota" != "x-1" ]; then
ceiling "$cpu_quota" "$cpu_period"
fi
fi
fi
else
# v2
# on cgroupsv2 the period and quota a queried from the same file
local cpu_max_file="/sys/fs/cgroup/cpu.max"
# when both are set we will have the following output:
# $MAX $PERIOD
# where the first number is the quota/max and the second is the period
# if the quota/max is not set then we will have only the period set:
# max 100000
if [ -r "${cpu_max_file}" ]; then
local cpu_max="$(cat ${cpu_max_file})"
if [ "x$cpu_max" != "x" ]; then
local cpu_quota="$(echo $cpu_max | awk '{print $1}')"
local cpu_period="$(echo $cpu_max | awk '{print $2}')"
if [ "$cpu_quota" != "max" ] && [ "x$cpu_period" != "x" ]; then
ceiling "$cpu_quota" "$cpu_period"
fi
fi
fi
fi
fi
}

max_unbounded() {
cat /proc/meminfo | grep 'MemTotal:' | awk '{print $2*1024}'
}

container_memory() {
# High number which is the max limit unit which memory is supposed to be unbounded.
local mem_file="/sys/fs/cgroup/memory/memory.limit_in_bytes"
local max_mem_unbounded="$(max_unbounded)"
if [ -r "${mem_file}" ]; then
local max_mem="$(cat ${mem_file})"
if [ ${max_mem} -lt ${max_mem_unbounded} ]; then
echo "${max_mem}"
# High number which is the max limit unit which memory is supposed to be unbounded.
if [ "${CGROUPS_VERSION}" = "v1" ]; then
local mem_file="/sys/fs/cgroup/memory/memory.limit_in_bytes"
if [ -r "${mem_file}" ]; then
local max_mem="$(cat ${mem_file})"
if [ ${max_mem} -lt ${max_mem_unbounded} ]; then
echo "${max_mem}"
fi
fi
else
# v2
local mem_file="/sys/fs/cgroup/memory.max"
if [ -r "${mem_file}" ]; then
local max_mem="$(cat ${mem_file})"
# if not set, it will contain only the string "max"
if [ "$max_mem" != "max" ]; then
if [ ${max_mem} -lt ${max_mem_unbounded} ]; then
echo "${max_mem}"
fi
fi
fi
fi
}
Expand All @@ -60,17 +103,17 @@ min() {
printf "%s\n" "$@" | sort -g | head -n1
}

local limit="$(core_limit)"
limit="$(core_limit)"
if [ x$limit != x ]; then
export CONTAINER_CORE_LIMIT="$limit"
fi

local env_core_limit="$(min $CONTAINER_CORE_LIMIT $JAVA_CORE_LIMIT)"
env_core_limit="$(min $CONTAINER_CORE_LIMIT $JAVA_CORE_LIMIT)"
if [ -n "$env_core_limit" ]; then
export CORE_LIMIT="$env_core_limit"
fi

local max_mem="$(container_memory)"
max_mem="$(container_memory)"
if [ x$max_mem != x ]; then
export CONTAINER_MAX_MEMORY="$max_mem"
fi
2 changes: 1 addition & 1 deletion modules/rhpam-kogito-prod-profile/module.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schema_version: 1
name: org.kie.kogito.rhpam.prod.profile
version: '7.13.4'
version: '7.13.5'
description: Holds custom configurations for productized Kogito images. Add as first module to be installed.

envs:
Expand Down
4 changes: 2 additions & 2 deletions rhpam-kogito-builder-rhel8-overrides.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema_version: 1

name: "rhpam-7/rhpam-kogito-builder-rhel8"
version: "7.13.4"
version: "7.13.5"
from: "registry.redhat.io/ubi8/ubi-minimal:latest"
description: "RHPAM Platform for building Kogito based on Quarkus or SpringBoot"

Expand Down Expand Up @@ -43,7 +43,7 @@ ports:
modules:
install:
- name: org.kie.kogito.rhpam.prod.profile
version: "7.13.4"
version: "7.13.5"
- name: org.kie.kogito.image.dependencies
- name: org.kie.kogito.system.user
- name: org.kie.kogito.logging
Expand Down
18 changes: 9 additions & 9 deletions rhpam-kogito-imagestream.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@ items:
openshift.io/provider-display-name: Kie Group.
spec:
tags:
- name: '7.13.4'
- name: '7.13.5'
annotations:
description: RHPAM Runtime image for Kogito based on Quarkus or SpringBoot JVM image
iconClass: icon-jbpm
tags: rhpam-kogito,runtime,kogito,quarkus,springboot,jvm
supports: quarkus
version: '7.13.4'
version: '7.13.5'
referencePolicy:
type: Local
from:
kind: DockerImage
name: registry.redhat.io/rhpam-7/rhpam-kogito-runtime-jvm-rhel8:7.13.4
name: registry.redhat.io/rhpam-7/rhpam-kogito-runtime-jvm-rhel8:7.13.5
- kind: ImageStream
apiVersion: v1
metadata:
Expand All @@ -36,18 +36,18 @@ items:
openshift.io/provider-display-name: Kie Group.
spec:
tags:
- name: '7.13.4'
- name: '7.13.5'
annotations:
description: RHPAM Runtime image for Kogito based on Quarkus native image
iconClass: icon-jbpm
tags: rhpam-kogito,runtime,kogito,quarkus,native
supports: quarkus
version: '7.13.4'
version: '7.13.5'
referencePolicy:
type: Local
from:
kind: DockerImage
name: registry.redhat.io/rhpam-7/rhpam-kogito-runtime-native-rhel8:7.13.4
name: registry.redhat.io/rhpam-7/rhpam-kogito-runtime-native-rhel8:7.13.5
- kind: ImageStream
apiVersion: v1
metadata:
Expand All @@ -57,16 +57,16 @@ items:
openshift.io/provider-display-name: Kie Group.
spec:
tags:
- name: '7.13.4'
- name: '7.13.5'
annotations:
description: RHPAM Platform for building Kogito based on Quarkus or SpringBoot
iconClass: icon-jbpm
tags: rhpam-kogito,builder,kogito,quarkus,springboot
supports: quarkus
version: '7.13.4'
version: '7.13.5'
referencePolicy:
type: Local
from:
kind: DockerImage
name: registry.redhat.io/rhpam-7/rhpam-kogito-builder-rhel8:7.13.4
name: registry.redhat.io/rhpam-7/rhpam-kogito-builder-rhel8:7.13.5

2 changes: 1 addition & 1 deletion rhpam-kogito-runtime-jvm-rhel8-overrides.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema_version: 1

name: "rhpam-7/rhpam-kogito-runtime-jvm-rhel8"
version: "7.13.4"
version: "7.13.5"
from: "registry.redhat.io/ubi8/ubi-minimal:latest"
description: "RHPAM Runtime image for Kogito based on Quarkus or SpringBoot JVM image"

Expand Down
2 changes: 1 addition & 1 deletion rhpam-kogito-runtime-native-rhel8-overrides.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
schema_version: 1

name: "rhpam-7/rhpam-kogito-runtime-native-rhel8"
version: "7.13.4"
version: "7.13.5"
from: "registry.redhat.io/ubi8/ubi-minimal:latest"
description: "RHPAM Runtime image for Kogito based on Quarkus native image"

Expand Down
9 changes: 5 additions & 4 deletions tests/features/common-dynamic-resources.feature
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,11 @@ Feature: Common tests for Kogito images
And container log should match regex -Xmx512m

Scenario: Verify if Java Remote Debug is correctly configured
When container is started with args
| arg | value |
| command | bash -c "sleep 2s; /home/kogito/kogito-app-launch.sh" |
| env_json | {"SCRIPT_DEBUG":"true", "JAVA_DEBUG":"true", "JAVA_DEBUG_PORT":"9222"} |
When container is started with env
| variable | value |
| SCRIPT_DEBUG | true |
| JAVA_DEBUG | true |
| JAVA_DEBUG_PORT | 9222 |
Then container log should match regex -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=9222

Scenario: Verify if the DEFAULT MEM RATIO properties are overridden with different values from user provided Xmx and Xms
Expand Down
1 change: 1 addition & 0 deletions tests/test-apps/clone-repo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ cp /tmp/kogito-examples/dmn-quarkus-example/src/main/resources/* /tmp/kogito-exa
cp "${SCRIPT_DIR}"/application.properties /tmp/kogito-examples/rules-quarkus-helloworld/src/main/resources/META-INF/
(echo ""; echo "server.port=10000") >> /tmp/kogito-examples/ruleunit-springboot-example/src/main/resources/application.properties

git config commit.gpgsign false
git add --all :/
git commit -am "test"

Expand Down
Loading