Skip to content

feat(core): move release to use Graal CE JDK#6390

Merged
bluestreak01 merged 3 commits intomasterfrom
vi_graal
Nov 13, 2025
Merged

feat(core): move release to use Graal CE JDK#6390
bluestreak01 merged 3 commits intomasterfrom
vi_graal

Conversation

@bluestreak01
Copy link
Copy Markdown
Member

@bluestreak01 bluestreak01 commented Nov 13, 2025

Release CI works: https://dev.azure.com/questdb/questdb/_build/results?buildId=194946&view=results

Docker:

❯ docker build -t questdb-graal-test .

[+] Building 6.3s (5/25)                                                                                                                                                                                       docker:default
 => [internal] load build definition from Dockerfile                                                                                                                                                                     0.0s
 => => transferring dockerfile: 4.77kB                                                                                                                                                                                   0.0s
 => [internal] load metadata for docker.io/library/debian:bookworm                                                                                                                                                       1.0s
 => [internal] load metadata for docker.io/library/debian:bookworm-slim                                                                                                                                                  1.1s
 => [internal] load .dockerignore                                                                                                                                                                                        0.0s
 => => transferring context: 2B                                                                                                                                                                                          0.0s
 => [internal] load build context                                                                                                                                                                                        0.0s
 => => transferring context: 7.08kB                                                                                                                                                                                      0.0s
 => [builder  1/12] FROM docker.io/library/debian:bookworm@sha256:6337ad82d5c764a8b6a16cde86b157fdce353e36d8ca06fc1b16d4f34d29960e                                                                                       5.2s
 => => resolve docker.io/library/debian:bookworm@sha256:6337ad82d5c764a8b6a16cde86b157fdce353e36d8ca06fc1b16d4f34d29960e                                                                                                 0.0s
[+] Building 233.8s (26/26) FINISHED                                                                                                                                                                         docker:default2 => [internal] load build definition from Dockerfile                                                                                                                                                                   0.0s
 => => transferring dockerfile: 4.77kB                                                                                                                                                                                 0.0s0 => [internal] load metadata for docker.io/library/debian:bookworm                                                                                                                                                     1.0s
 => [internal] load metadata for docker.io/library/debian:bookworm-slim                                                                                                                                                1.1s0 => [internal] load .dockerignore                                                                                                                                                                                      0.0s
 => => transferring context: 2B                                                                                                                                                                                        0.0s0 => [internal] load build context                                                                                                                                                                                      0.0s
 => => transferring context: 7.08kB                                                                                                                                                                                    0.0s2 => [builder  1/12] FROM docker.io/library/debian:bookworm@sha256:6337ad82d5c764a8b6a16cde86b157fdce353e36d8ca06fc1b16d4f34d29960e                                                                                     8.4s
 => => resolve docker.io/library/debian:bookworm@sha256:6337ad82d5c764a8b6a16cde86b157fdce353e36d8ca06fc1b16d4f34d29960e                                                                                               0.0s0 => => sha256:5d93aea697980315f27f81c68582d14f63dd3579c2d3a27dc495a588279eda20 48.48MB / 48.48MB                                                                                                                       6.5s
 => => sha256:6337ad82d5c764a8b6a16cde86b157fdce353e36d8ca06fc1b16d4f34d29960e 8.52kB / 8.52kB                                                                                                                         0.0s0 => => sha256:9d11a2b1e25f5c84ae3d454ed51ef64f0cf07cbbc1ec25d689b9b0de7071ea66 1.02kB / 1.02kB                                                                                                                         0.0s
 => => sha256:160279ddc32dcbc5152003a47fa174ec737fb737e916feba965fbb01f62983e7 453B / 453B                                                                                                                             0.0s0 => => extracting sha256:5d93aea697980315f27f81c68582d14f63dd3579c2d3a27dc495a588279eda20                                                                                                                              1.8s
 => [questdb 1/8] FROM docker.io/library/debian:bookworm-slim@sha256:936abff852736f951dab72d91a1b6337cf04217b2a77a5eaadc7c0f2f1ec1758                                                                                  5.7s0 => => resolve docker.io/library/debian:bookworm-slim@sha256:936abff852736f951dab72d91a1b6337cf04217b2a77a5eaadc7c0f2f1ec1758                                                                                          0.0s
 => => sha256:936abff852736f951dab72d91a1b6337cf04217b2a77a5eaadc7c0f2f1ec1758 8.56kB / 8.56kB                                                                                                                         0.0s5 => => sha256:f522a3167fb670cc4a4518fab6d8c4227fe4bc458f4c7294832383bf284d5e78 1.02kB / 1.02kB                                                                                                                         0.0s
 => => sha256:d23d86cb8a70ed255f7e4dc658df8dae7ceb9faf5c76ab0d05f9c4ab5a4bc3a4 453B / 453B                                                                                                                             0.0s7 => => sha256:1adabd6b0d6b8acfa4ad149a984df0977135a7babf423538c7284a02744a4ee8 28.23MB / 28.23MB                                                                                                                       4.5s
 => => extracting sha256:1adabd6b0d6b8acfa4ad149a984df0977135a7babf423538c7284a02744a4ee8                                                                                                                              1.1s
 => [questdb 2/8] WORKDIR /app                                                                                                                                                                                         0.2s
 => [builder  2/12] RUN apt-get update     && apt-get install --no-install-recommends -y        git curl wget gnupg2 ca-certificates lsb-release software-properties-common unzip maven     && rm -rf /var/lib/apt/l  31.6s
 => [builder  3/12] RUN curl -L -o /tmp/graalvm-ce.tar.gz       "https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.9/graalvm-community-jdk-17.0.9_linux-x64_bin.tar.gz"     && mkdir -p /usr/l  27.6s
 => [builder  4/12] WORKDIR /build                                                                                                                                                                                     0.0s
 => [builder  5/12] RUN echo tag_name ${tag_name:-master}                                                                                                                                                              0.2s
 => [builder  6/12] RUN git clone --depth=1 --progress --branch "${tag_name:-master}" --verbose https://github.com/questdb/questdb.git                                                                                11.2s
 => [builder  7/12] WORKDIR /build/questdb                                                                                                                                                                             0.0s
 => [builder  8/12] RUN mvn clean package -Djdk.lang.Process.launchMechanism=vfork -Dmaven.resolver.transport=wagon -Dmaven.wagon.httpconnectionManager.ttlSeconds=30 -DskipTests -P build-web-console,build-binari  148.6s
 => [builder  9/12] WORKDIR /build/questdb/core/target                                                                                                                                                                 0.0s
 => [builder 10/12] RUN tar xvfz questdb-*-rt-*.tar.gz                                                                                                                                                                 0.9s
 => [builder 11/12] RUN rm questdb-*-rt-*.tar.gz                                                                                                                                                                       0.2s
 => [builder 12/12] RUN dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')";     wget -O gosu "https://github.com/tianon/gosu/releases/download/1.19/gosu-$dpkgArch" &&     wget -O gosu.asc "https://g  1.7s
 => [questdb 3/8] COPY --from=builder /build/questdb/core/target/questdb-*-rt-* .                                                                                                                                      0.2s
 => [questdb 4/8] COPY --from=builder /build/questdb/core/target/gosu /usr/local/bin/gosu                                                                                                                              0.0s
 => [questdb 5/8] COPY docker-entrypoint.sh /docker-entrypoint.sh                                                                                                                                                      0.0s
 => [questdb 6/8] RUN chmod +x /docker-entrypoint.sh                                                                                                                                                                   0.2s
 => [questdb 7/8] RUN groupadd -g 10001 questdb &&     useradd -u 10001 -g 10001 -d /var/lib/questdb -M -s /sbin/nologin questdb &&     mkdir -p /var/lib/questdb &&     chown -R questdb:questdb /var/lib/questdb     0.2s
 => [questdb 8/8] WORKDIR /var/lib/questdb                                                                                                                                                                             0.0s
 => exporting to image                                                                                                                                                                                                 0.4s
 => => exporting layers                                                                                                                                                                                                0.4s
 => => writing image sha256:874d9bf83d3e5af112c6848950d6a4045f8260626fbc8ee79ce004b3abbeb90e                                                                                                                           0.0s
 => => naming to docker.io/library/questdb-graal-test                                                                                                                                                                  0.0s
❯ docker run questdb-graal-test

No arguments found in the configuration, start with default arguments
Checking data directory ownership
Running as questdb user
Log configuration loaded from: /var/lib/questdb/conf/log.conf
2025-11-13T14:23:32.822377Z I server-main extracted [path=/var/lib/questdb/import/readme.txt]
2025-11-13T14:23:32.963060Z I server-main extracted [path=/var/lib/questdb/import/trades.parquet]
2025-11-13T14:23:32.963136Z A server-main QuestDB 9.1.2-SNAPSHOT. Copyright (C) 2014-2025, all rights reserved.
2025-11-13T14:23:32.963555Z A server-main linux-x86-64 [AVX2,8, 64 bits, 64 processors]
2025-11-13T14:23:32.963626Z A server-main fs.file-max checked [limit=1073741816]
2025-11-13T14:23:32.963816Z A server-main vm.max_map_count checked [limit=1048576]
2025-11-13T14:23:32.997058Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/editor/editor.main.js]
2025-11-13T14:23:32.997580Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/editor/editor.main.css]
2025-11-13T14:23:32.998121Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/editor/editor.main.nls.js]
2025-11-13T14:23:32.998241Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/editor/editor.main.js.LICENSE.txt]
2025-11-13T14:23:32.998354Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/editor/editor.main.nls.js.LICENSE.txt]
2025-11-13T14:23:32.998619Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/loader.js]
2025-11-13T14:23:32.999003Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/base/common/worker/simpleWorker.nls.de.js]
2025-11-13T14:23:32.999132Z I server-main extracted [path=/var/lib/questdb/public/assets/vs/base/common/worker/simpleWorker.nls.es.js]

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Nov 13, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

The pull request migrates JDK infrastructure from standard Java 17 and Apache Corretto to GraalVM Community Edition 17.0.9 across the CI/CD pipeline and Docker build configuration, including platform-specific installation steps and Maven configuration updates.

Changes

Cohort / File(s) Summary
CI/CD GraalVM Migration
ci/github-release-pipeline.yml
Removes explicit jdk version specifications from matrix entries, adds platform-specific GraalVM 17.0.9 installation steps (bash for Linux, PowerShell for Windows), and updates Maven task to reference GRAALVM_HOME via javaHomeOption and jdkDirectory instead of jdkVersionOption.
Docker GraalVM Base Image
core/Dockerfile
Replaces Corretto JDK setup with GraalVM Community JDK 17 installation via ARG GRAAL_JDK_VERSION, removes Corretto repository configuration, adds Maven to base apt-get install, sets JAVA_HOME and updates PATH for the new JDK.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify platform-specific GraalVM installation syntax (bash and PowerShell scripts) matches release channel and version
  • Confirm Maven configuration correctly resolves GRAALVM_HOME environment variable in CI/CD context
  • Check Docker JAVA_HOME and PATH configuration properly exposes GraalVM JDK to downstream build steps

Possibly related PRs

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'feat(core): move release to use Graal CE JDK' directly and clearly summarizes the main change: migrating release artifacts from Corretto JDK to GraalVM Community Edition JDK 17.
Description check ✅ Passed The description provides relevant context about the change, including CI validation results, Docker build output, and runtime verification showing the new GraalVM-based setup works correctly.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@bluestreak01
Copy link
Copy Markdown
Member Author

@CodeRabbit review this move from corretto JDK 17 to Graal CE 17. This change focused on the release artefacts. When release is shipped, it will be done with Graal after this change is merged

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Nov 13, 2025

@bluestreak01: I'll review the migration from Corretto JDK 17 to Graal CE 17 for your release artifacts. I'll examine:

  • Build configuration changes (Maven, CI/CD pipelines)
  • Dockerfile modifications for the new JDK
  • Any compatibility considerations with Graal CE
  • Impact on runtime dependencies and performance characteristics

I can see from your PR objectives that the CI build and Docker container are working successfully. Let me analyze all the changes in detail.

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
ci/github-release-pipeline.yml (1)

3-3: Consider centralizing GraalVM version to reduce duplication.

The GraalVM version 17.0.9 is hardcoded in three locations (Dockerfile line 3, Linux install line 40, Windows install line 54). Future version updates require changes in multiple places.

If versioning flexibility becomes important, consider moving this to a pipeline variable or a .env / configuration file that both Docker and CI can reference.

Also applies to: 40-40, 54-54

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 63194ca and cd0b6b8.

📒 Files selected for processing (2)
  • ci/github-release-pipeline.yml (1 hunks)
  • core/Dockerfile (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (37)
  • GitHub Check: Github Binaries Release (Release binaries to github Release)
  • GitHub Check: New pull request (Coverage Report Coverage Report)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-other)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-pgwire)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-cairo-sub)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-cairo-root)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-fuzz2)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-fuzz1)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-griffin-sub)
  • GitHub Check: New pull request (SelfHosted Other tests on linux-x86-graal)
  • GitHub Check: New pull request (SelfHosted Other tests on linux-arm64)
  • GitHub Check: New pull request (SelfHosted Other tests on linux-x64-zfs)
  • GitHub Check: New pull request (SelfHosted Running tests with cover on linux-griffin-root)
  • GitHub Check: New pull request (SelfHosted Griffin tests on linux-x64-zfs)
  • GitHub Check: New pull request (Hosted Running tests on windows-other-2)
  • GitHub Check: New pull request (Hosted Running tests on windows-other-1)
  • GitHub Check: New pull request (Hosted Running tests on windows-pgwire)
  • GitHub Check: New pull request (Hosted Running tests on windows-cairo-2)
  • GitHub Check: New pull request (Hosted Running tests on windows-cairo-1)
  • GitHub Check: New pull request (Hosted Running tests on windows-fuzz2)
  • GitHub Check: New pull request (Hosted Running tests on windows-fuzz1)
  • GitHub Check: New pull request (Hosted Running tests on windows-griffin-sub)
  • GitHub Check: New pull request (Hosted Running tests on windows-griffin-base)
  • GitHub Check: New pull request (Hosted Running tests on mac-other)
  • GitHub Check: New pull request (Hosted Running tests on mac-pgwire)
  • GitHub Check: New pull request (Hosted Running tests on mac-cairo-fuzz)
  • GitHub Check: New pull request (SelfHosted Griffin tests on linux-x86-graal)
  • GitHub Check: New pull request (Hosted Running tests on mac-cairo)
  • GitHub Check: New pull request (SelfHosted Cairo tests on linux-x86-graal)
  • GitHub Check: New pull request (Rust Test and Lint on linux-jdk17)
  • GitHub Check: New pull request (Hosted Running tests on mac-griffin)
  • GitHub Check: New pull request (SelfHosted Cairo tests on linux-x64-zfs)
  • GitHub Check: New pull request (SelfHosted Griffin tests on linux-arm64)
  • GitHub Check: New pull request (SelfHosted Cairo tests on linux-arm64)
  • GitHub Check: Github Binaries Release (Building Binaries on Azure workers windows)
  • GitHub Check: Github Binaries Release (Building Binaries on Azure workers linux-jdk17)
  • GitHub Check: New pull request (Check Changes Check changes)
🔇 Additional comments (5)
core/Dockerfile (2)

7-11: Clean consolidation of base tools and Maven installation.

The consolidation of package installation into a single RUN command with proper cleanup is good practice. Maven is now sourced from the system package manager rather than tied to the Corretto repository.


22-23: JAVA_HOME and PATH configuration is correct.

The environment variables are properly set to enable the GraalVM JDK throughout the build and runtime stages.

ci/github-release-pipeline.yml (3)

74-81: Maven task correctly references GraalVM installation.

The Maven task is properly configured to use the custom-installed GraalVM via javaHomeOption: 'Path' and jdkDirectory: '$(GRAALVM_HOME)', which allows the pipeline to use the GraalVM JDK installed in the earlier steps.


1-81: Verify GraalVM CE licensing and release artifact compatibility.

This PR limits GraalVM Community Edition to the release pipeline only; test workflows remain unchanged and use Temurin JDK 17. Since the release pipeline intentionally skips tests (-DskipTests), the concern about full test suite passing is out of scope for this specific change.

However, confirm before merge:

  1. GraalVM Community Edition licensing is compliant with QuestDB's distribution model
  2. Release artifacts built with GraalVM CE are functionally equivalent to prior Corretto-built releases

52-71: The Windows zip structure assumption is documented and valid; the core concern in this review is unfounded.

GraalVM Windows ZIP unpacks to a single top-level directory named for that build (pattern: graalvm-ce-java-), containing the standard JDK/GraalVM layout. The Windows script's assumption on line 66 (Get-ChildItem $dest | Where-Object { $_.PSIsContainer }) aligns with this documented behavior.

The diff's defensive null check would be optional good practice, but the script correctly handles the documented structure. Additionally, the pipeline does not use checksum verification anywhere else for third-party downloads, so suggesting it only for Windows is inconsistent. The SHA256 hash in the diff is also a placeholder and not a real value.

Likely an incorrect or invalid review comment.

@bluestreak01 bluestreak01 merged commit 22299ee into master Nov 13, 2025
18 of 44 checks passed
@bluestreak01 bluestreak01 deleted the vi_graal branch November 13, 2025 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant