diff --git a/.github/workflows/nightly-build.yml b/.github/workflows/nightly-build.yml index b693625696fff7..ed19702f76e383 100644 --- a/.github/workflows/nightly-build.yml +++ b/.github/workflows/nightly-build.yml @@ -107,7 +107,8 @@ jobs: build-proxy-native-image: if: github.repository == 'apache/shardingsphere' - name: Build GraalVM Native Image + name: Build Proxy Native Image + needs: global-environment timeout-minutes: 90 permissions: contents: read @@ -119,7 +120,7 @@ jobs: ref: ${{ inputs.commit-id }} - uses: graalvm/setup-graalvm@v1 with: - java-version: '17.0.9' + java-version: '21.0.1' distribution: 'graalvm-community' github-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/cache@v3 diff --git a/.github/workflows/nightly-ci.yml b/.github/workflows/nightly-ci.yml index 726a6448d016ef..5c369d039df6a6 100644 --- a/.github/workflows/nightly-ci.yml +++ b/.github/workflows/nightly-ci.yml @@ -115,7 +115,7 @@ jobs: - uses: actions/checkout@v3 - uses: graalvm/setup-graalvm@v1 with: - java-version: '17.0.9' + java-version: '21.0.1' distribution: 'graalvm-community' github-token: ${{ secrets.GITHUB_TOKEN }} - uses: actions/cache@v3 diff --git a/distribution/proxy-native/pom.xml b/distribution/proxy-native/pom.xml index 1530b227d37635..407f1a925cb0f4 100644 --- a/distribution/proxy-native/pom.xml +++ b/distribution/proxy-native/pom.xml @@ -72,7 +72,7 @@ release.native - 17 + 21 apache-shardingsphere-${project.version} diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md index a934dcbea41a92..256a0489d6bb39 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.cn.md @@ -15,7 +15,6 @@ CE 的 `native-image` 命令行工具的长篇大论的 shell 命令。 ShardingSphere JDBC 要求在如下或更高版本的 `GraalVM CE` 完成构建 GraalVM Native Image。使用者可通过 SDKMAN! 快速切换 JDK。这同理 适用于 `Oracle GraalVM`, `Liberica Native Image Kit` 和 `Mandrel` 等 `GraalVM CE` 的下游发行版。 -- GraalVM CE 23.0.2 For JDK 17.0.9,对应于 SDKMAN! 的 `17.0.9-graalce` - GraalVM CE 23.1.1 For JDK 21.0.1,对应于 SDKMAN! 的 `21.0.1-graalce` ### Maven 生态 @@ -216,8 +215,8 @@ ShardingSphere 定义了 `nativeTestInShardingSphere` 的 Maven Profile 用于 sudo apt install unzip zip curl sed -y curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" -sdk install java 17.0.9-graalce -sdk use java 17.0.9-graalce +sdk install java 21.0.1-graalce +sdk use java 21.0.1-graalce sudo apt-get install build-essential libz-dev zlib1g-dev -y git clone git@github.com:apache/shardingsphere.git diff --git a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md index 73832dcc9e05a4..9c2dfa05ece1b7 100644 --- a/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md +++ b/docs/document/content/user-manual/shardingsphere-jdbc/graalvm-native-image/_index.en.md @@ -16,7 +16,6 @@ ShardingSphere JDBC requires GraalVM Native Image to be built with GraalVM CE as JDK through `SDKMAN!`. Same reason applicable to downstream distributions of `GraalVM CE` such as `Oracle GraalVM`, `Liberica Native Image Kit` and `Mandrel`. -- GraalVM CE 23.0.2 For JDK 17.0.9, corresponding to `17.0.9-graalce` of SDKMAN! - GraalVM CE 23.1.1 For JDK 21.0.1, corresponding to `21.0.1-graalce` of SDKMAN! ### Maven Ecology @@ -225,8 +224,8 @@ You must install container tools such as Docker Engine or PodMan to execute `tes sudo apt install unzip zip curl sed -y curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" -sdk install java 17.0.9-graalce -sdk use java 17.0.9-graalce +sdk install java 21.0.1-graalce +sdk use java 21.0.1-graalce sudo apt-get install build-essential libz-dev zlib1g-dev -y git clone git@github.com:apache/shardingsphere.git diff --git a/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.cn.md b/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.cn.md index 0c4adf765c751a..9ff585088b46a3 100644 --- a/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.cn.md +++ b/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.cn.md @@ -34,7 +34,7 @@ services: 或 `GraalVM Community Edition` 的下游发行版。若使用 `SDKMAN!`, ```shell -sdk install java 17.0.9-graalce +sdk install java 21.0.1-graalce ``` 2. 根据 https://www.graalvm.org/jdk17/reference-manual/native-image/#prerequisites 的要求安装本地工具链。 @@ -82,7 +82,7 @@ sdk install java 17.0.9-graalce - 通过命令行构建 GraalVM Native Image。 ```bash -./mvnw -am -pl distribution/proxy-native -B -T1C -Prelease.native -DskipTests clean package +./mvnw -am -pl distribution/proxy-native -T1C -Prelease.native -DskipTests clean package ``` 3. 通过命令行启动 Native Image, 需要带上 4 个参数。 @@ -97,7 +97,7 @@ sdk install java 17.0.9-graalce 4. 如果需要构建 Docker Image, 在添加存在 SPI 实现的依赖或第三方依赖后, 在命令行执行如下命令。 ```shell -./mvnw -am -pl distribution/proxy-native -B -T1C -Prelease.native,docker.native -DskipTests clean package +./mvnw -am -pl distribution/proxy-native -T1C -Prelease.native,docker.native -DskipTests clean package ``` - 假设存在包含`server.yaml` 的 `conf` 文件夹为 `./custom/conf`,可通过如下的 `docker-compose.yml` 文件启动 GraalVM Native diff --git a/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.en.md b/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.en.md index 04117da1d546bc..712e526e5fd58e 100644 --- a/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.en.md +++ b/docs/document/content/user-manual/shardingsphere-proxy/startup/graalvm-native-image.en.md @@ -37,7 +37,7 @@ services: JDK 17 according to https://www.graalvm.org/downloads/. If `SDKMAN!` is used, ```shell -sdk install java 17.0.9-graalce +sdk install java 21.0.1-graalce ``` 2. Install the local toolchain as required by https://www.graalvm.org/jdk17/reference-manual/native-image/#prerequisites. @@ -59,7 +59,7 @@ sdk install java 17.0.9-graalce Image. ```bash -./mvnw -am -pl distribution/proxy-native -B -T1C -Prelease.native -DskipTests clean package +./mvnw -am -pl distribution/proxy-native -T1C -Prelease.native -DskipTests clean package ``` - Scenario 2: It is necessary to use a JAR that has an SPI implementation or a third-party dependent JAR of a LICENSE @@ -87,7 +87,7 @@ sdk install java 17.0.9-graalce - Build GraalVM Native Image via command line. ```bash -./mvnw -am -pl distribution/proxy-native -B -T1C -Prelease.native -DskipTests clean package +./mvnw -am -pl distribution/proxy-native -T1C -Prelease.native -DskipTests clean package ``` 3. To start Native Image through the command line, you need to bring 4 parameters. The first parameter is the `Port` diff --git a/infra/expr/type/espresso/pom.xml b/infra/expr/type/espresso/pom.xml index 9d4b935d03dc7b..b538e1be97a6ee 100644 --- a/infra/expr/type/espresso/pom.xml +++ b/infra/expr/type/espresso/pom.xml @@ -26,6 +26,10 @@ shardingsphere-infra-expr-espresso ${project.artifactId} + + 23.1.1 + + org.apache.shardingsphere @@ -50,9 +54,16 @@ - org.graalvm.truffle - truffle-api + org.graalvm.polyglot + polyglot + ${graalvm.version} + + + org.graalvm.polyglot + java-community ${graalvm.version} + pom + provided diff --git a/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java b/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java index fa5f68bdbb5042..5c24281547b20d 100644 --- a/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java +++ b/mode/type/standalone/repository/provider/jdbc/src/main/java/org/apache/shardingsphere/mode/repository/standalone/jdbc/sql/JDBCRepositorySQLLoader.java @@ -84,7 +84,7 @@ public static JDBCRepositorySQL load(final String type) { } /** - * Under the GraalVM Native Image corresponding to GraalVM CE 23.0.2 For JDK 17.0.9, although there is + * Under the GraalVM Native Image corresponding to GraalVM CE 23.1.1 For JDK 21.0.1, although there is * `com.oracle.svm.core.jdk.resources.NativeImageResourceFileSystemProvider`, the corresponding * `com.oracle.svm.core.jdk.resources.NativeImageResourceFileSystem` does not autoload. This is mainly to align the * behavior of `ZipFileSystemProvider`, so ShardingSphere need to manually open and close the FileSystem diff --git a/pom.xml b/pom.xml index b84dd0f003ff32..d122c2a47fcdb8 100644 --- a/pom.xml +++ b/pom.xml @@ -995,7 +995,7 @@ generateMetadata - 17 + 21 @@ -1059,7 +1059,7 @@ nativeTestInShardingSphere - 17 + 21 diff --git a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/commons/FileTestUtils.java b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/commons/FileTestUtils.java index ed61a51053b326..268b136b33b4a9 100644 --- a/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/commons/FileTestUtils.java +++ b/test/native/src/test/java/org/apache/shardingsphere/test/natived/jdbc/commons/FileTestUtils.java @@ -27,7 +27,7 @@ /** * The background for this class comes from oracle/graal#7682 - * and Accessing Resources in Native Image. + * and Accessing Resources in Native Image. * GraalVM Native Image has special features in its handling of file systems. * This means we are better off reading the file via `java.io.InputStream` instead of `java.net.URL` to avoid extra code * processing. diff --git a/test/native/src/test/resources/test-native/yaml/features/sharding.yaml b/test/native/src/test/resources/test-native/yaml/features/sharding.yaml index f15400410a72f4..eac37cfb18e3a3 100644 --- a/test/native/src/test/resources/test-native/yaml/features/sharding.yaml +++ b/test/native/src/test/resources/test-native/yaml/features/sharding.yaml @@ -58,7 +58,7 @@ rules: shardingColumn: user_id shardingAlgorithmName: inline shardingAlgorithms: - # `groovy.lang.Closure` related classes are not available on GraalVM CE 23.0.2 For JDK 17.0.9, + # `groovy.lang.Closure` related classes are not available on GraalVM CE 23.1.1 For JDK 21.0.1, # This CLASS_BASE algorithm class is designed to emulate INLINE's `ds_${user_id % 2}`. # See https://github.com/oracle/graal/issues/5522 . inline: