From 0c7c104a97b930d6a9585e886f56a3a854be0299 Mon Sep 17 00:00:00 2001 From: Charlie Le Date: Mon, 13 Jan 2025 01:34:37 -0800 Subject: [PATCH] fix(docker): add workaround for JDK-8345296 on OSX with _JAVA_OPTIONS (#1872) * fix(docker): add workaround for JDK-8345296 on OSX with _JAVA_OPTIONS Signed-off-by: Charlie Le * fix(docker): add macOS arm64 support for JDK-8345296 workaround Signed-off-by: Charlie Le * set adFailure back to off --------- Signed-off-by: Charlie Le Co-authored-by: Juliano Costa --- .env.arm64 | 1 + Makefile | 15 ++++++++++++--- docker-compose.minimal.yml | 4 ++++ docker-compose.yml | 6 ++++++ src/ad/Dockerfile | 4 +++- src/flagd/demo.flagd.json | 2 +- 6 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 .env.arm64 diff --git a/.env.arm64 b/.env.arm64 new file mode 100644 index 0000000000..92b04b3a5f --- /dev/null +++ b/.env.arm64 @@ -0,0 +1 @@ +_JAVA_OPTIONS=-XX:UseSVE=0 diff --git a/Makefile b/Makefile index a10756b585..3f0eb3fd91 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,15 @@ MISSPELL = $(TOOLS_DIR)/$(MISSPELL_BINARY) DOCKER_COMPOSE_CMD ?= docker compose DOCKER_COMPOSE_ENV=--env-file .env --env-file .env.override +DOCKER_COMPOSE_BUILD_ARGS= + +# Java Workaround for macOS 15.2+ and M4 chips (see https://bugs.openjdk.org/browse/JDK-8345296) +ifeq ($(shell uname -m),arm64) + ifeq ($(shell uname -s),Darwin) + DOCKER_COMPOSE_ENV+= --env-file .env.arm64 + DOCKER_COMPOSE_BUILD_ARGS+= --build-arg=_JAVA_OPTIONS=-XX:UseSVE=0 + endif +endif # see https://github.com/open-telemetry/build-tools/releases for semconvgen updates # Keep links in semantic_conventions/README.md and .vscode/settings.json in sync! @@ -77,11 +86,11 @@ install-tools: $(MISSPELL) .PHONY: build build: - $(DOCKER_COMPOSE_CMD) build + $(DOCKER_COMPOSE_CMD) build $(DOCKER_COMPOSE_BUILD_ARGS) .PHONY: build-and-push build-and-push: - $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) build --push + $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) build $(DOCKER_COMPOSE_BUILD_ARGS) --push # Create multiplatform builder for buildx .PHONY: create-multiplatform-builder @@ -209,7 +218,7 @@ ifdef SERVICE endif ifdef service - $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) build $(service) + $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) build $(DOCKER_COMPOSE_BUILD_ARGS) $(service) $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) stop $(service) $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) rm --force $(service) $(DOCKER_COMPOSE_CMD) $(DOCKER_COMPOSE_ENV) create $(service) diff --git a/docker-compose.minimal.yml b/docker-compose.minimal.yml index 1488d4c77a..4e3b12ed13 100644 --- a/docker-compose.minimal.yml +++ b/docker-compose.minimal.yml @@ -44,6 +44,8 @@ services: - OTEL_RESOURCE_ATTRIBUTES - OTEL_LOGS_EXPORTER=otlp - OTEL_SERVICE_NAME=ad + # Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296 + - _JAVA_OPTIONS depends_on: otel-collector: condition: service_started @@ -654,6 +656,8 @@ services: - OPENSEARCH_JAVA_OPTS=-Xms300m -Xmx300m - DISABLE_INSTALL_DEMO_CONFIG=true - DISABLE_SECURITY_PLUGIN=true + # Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296 + - _JAVA_OPTIONS ulimits: memlock: soft: -1 diff --git a/docker-compose.yml b/docker-compose.yml index c49c4411d6..18862db8b6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -71,6 +71,8 @@ services: - OTEL_RESOURCE_ATTRIBUTES - OTEL_LOGS_EXPORTER=otlp - OTEL_SERVICE_NAME=ad + # Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296 + - _JAVA_OPTIONS depends_on: otel-collector: condition: service_started @@ -658,6 +660,8 @@ services: - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=kafka - KAFKA_HEAP_OPTS=-Xmx400m -Xms400m + # Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296 + - _JAVA_OPTIONS healthcheck: test: nc -z kafka 9092 start_period: 10s @@ -798,6 +802,8 @@ services: - OPENSEARCH_JAVA_OPTS=-Xms300m -Xmx300m - DISABLE_INSTALL_DEMO_CONFIG=true - DISABLE_SECURITY_PLUGIN=true + # Workaround on OSX for https://bugs.openjdk.org/browse/JDK-8345296 + - _JAVA_OPTIONS ulimits: memlock: soft: -1 diff --git a/src/ad/Dockerfile b/src/ad/Dockerfile index 1e8cd71d7a..1b59165945 100644 --- a/src/ad/Dockerfile +++ b/src/ad/Dockerfile @@ -3,7 +3,7 @@ FROM --platform=${BUILDPLATFORM} eclipse-temurin:21-jdk AS builder - +ARG _JAVA_OPTIONS WORKDIR /usr/src/app/ COPY ./src/ad/gradlew* ./src/ad/settings.gradle* ./src/ad/build.gradle ./ @@ -23,6 +23,8 @@ RUN ./gradlew installDist -PprotoSourceDir=./proto FROM eclipse-temurin:21-jre ARG OTEL_JAVA_AGENT_VERSION +ARG _JAVA_OPTIONS + WORKDIR /usr/src/app/ COPY --from=builder /usr/src/app/ ./ diff --git a/src/flagd/demo.flagd.json b/src/flagd/demo.flagd.json index 4425e72415..b4febb1570 100644 --- a/src/flagd/demo.flagd.json +++ b/src/flagd/demo.flagd.json @@ -44,7 +44,7 @@ "on": true, "off": false }, - "defaultVariant": "on" + "defaultVariant": "off" }, "kafkaQueueProblems": { "description": "Overloads Kafka queue while simultaneously introducing a consumer side delay leading to a lag spike",