This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 4b5be6ed9f0 Disable the implementation of Etcd during the build of
ShardingSphere Proxy Native (#28194)
4b5be6ed9f0 is described below
commit 4b5be6ed9f05a89ac95cfc8db60b26d1b9c0af8a
Author: Ling Hengqian <[email protected]>
AuthorDate: Mon Aug 21 12:31:51 2023 +0800
Disable the implementation of Etcd during the build of ShardingSphere Proxy
Native (#28194)
---
distribution/proxy-native/pom.xml | 6 +++
.../startup/graalvm-native-image.cn.md | 25 +++++------
.../startup/graalvm-native-image.en.md | 50 ++++++++++++----------
3 files changed, 46 insertions(+), 35 deletions(-)
diff --git a/distribution/proxy-native/pom.xml
b/distribution/proxy-native/pom.xml
index ab47d75ae1c..8935e4602fd 100644
--- a/distribution/proxy-native/pom.xml
+++ b/distribution/proxy-native/pom.xml
@@ -37,6 +37,12 @@
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-proxy-bootstrap</artifactId>
<version>${project.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-cluster-mode-repository-etcd</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
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 8de2525a781..8c5ec56f71c 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
@@ -9,9 +9,9 @@ weight = 2
## 注意事项
-- ShardingSphere Proxy 尚未准备好与 GraalVM Native Image 集成。
- Proxy 的 Native Image 产物在
https://github.com/apache/shardingsphere/pkgs/container/shardingsphere-proxy-native
存在每夜构建。
- 假设存在包含`server.yaml` 的 `conf` 文件夹为 `./custom/conf`,你可通过如下的
`docker-compose.yml` 文件进行测试。
+- ShardingSphere Proxy 尚未准备好与 GraalVM Native Image 集成。 Proxy 的 Native Image 产物在
+
https://github.com/apache/shardingsphere/pkgs/container/shardingsphere-proxy-native
存在每夜构建。假设存在包
+ 含`server.yaml` 的 `conf` 文件夹为 `./custom/conf`,你可通过如下的 `docker-compose.yml`
文件进行测试。
```yaml
version: "3.8"
@@ -44,6 +44,9 @@ services:
- 本节假定处于 Linux(amd64,aarch64), MacOS(amd64)或 Windows(amd64)环境。
如果你位于 MacOS(aarch64/M1) 环境,你需要关注尚未关闭的
https://github.com/oracle/graal/issues/2666 。
+- `org.apache.shardingsphere:shardingsphere-cluster-mode-repository-etcd` 受
+ https://github.com/micronaut-projects/micronaut-gcp/issues/532 影响,不可使用。
+
## 前提条件
1. 根据 https://www.graalvm.org/downloads/ 要求安装和配置 JDK 17 对应的 `GraalVM Community
Edition` 或 `Oracle GraalVM`
@@ -148,16 +151,14 @@ services:
# 可观察性
-- 针对 GraalVM Native Image 形态的 ShardingSphere
- Proxy,其提供的可观察性的能力与
https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/observability/
- 并不一致。
+- 针对 GraalVM Native Image 形态的 ShardingSphere Proxy,其提供的可观察性的能力与
+
https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/observability/
并不一致。
-- 你可以使用 https://www.graalvm.org/latest/tools/ 提供的一系列命令行工具或可视化工具观察 GraalVM
Native Image
- 的内部行为,并根据其要求使用 VSCode 完成调试工作。
- 如果你正在使用 IntelliJ IDEA 并且希望调试生成的 GraalVM Native
- Image,你可以关注
https://blog.jetbrains.com/idea/2022/06/intellij-idea-2022-2-eap-5/#Experimental_GraalVM_Native_Debugger_for_Java
- 及其后继。如果你使用的不是 Linux,则无法对 GraalVM Native Image 进行
- Debug,请关注尚未关闭的 https://github.com/oracle/graal/issues/5648 。
+- 你可以使用 https://www.graalvm.org/latest/tools/ 提供的一系列命令行工具或可视化工具观察 GraalVM
Native Image 的内部行为,
+ 并根据其要求使用 VSCode 完成调试工作。如果你正在使用 IntelliJ IDEA 并且希望调试生成的 GraalVM Native
Image,你可以关注
+
https://blog.jetbrains.com/idea/2022/06/intellij-idea-2022-2-eap-5/#Experimental_GraalVM_Native_Debugger_for_Java
+ 及其后继。如果你使用的不是 Linux,则无法对 GraalVM Native Image 进行 Debug,请关注尚未关闭的
+ https://github.com/oracle/graal/issues/5648 。
- 对于使用 `ShardingSphere Agent` 等 APM Java Agent 的情形, GraalVM 的 `native-image`
组件尚未完全支持在构建 Native
Image 时使用 javaagent,你需要关注尚未关闭的 https://github.com/oracle/graal/issues/1065。
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 f1163508b6b..c7015ebdf57 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
@@ -10,8 +10,8 @@ corresponding `Docker Image` through the `native-image`
component of `GraalVM`.
## Notice
-- ShardingSphere Proxy is not yet ready to integrate with GraalVM Native Image.
- Proxy's Native Image artifacts are built nightly at
https://github.com/apache/shardingsphere/pkgs/container/shardingsphere-proxy-native
.
+- ShardingSphere Proxy is not yet ready to integrate with GraalVM Native
Image. Proxy's Native Image artifacts are
+ built nightly at
https://github.com/apache/shardingsphere/pkgs/container/shardingsphere-proxy-native
.
Assuming there is a `conf` folder containing `server.yaml` as
`./custom/conf`, you can test it with the
following `docker-compose.yml` file.
@@ -27,35 +27,39 @@ services:
- "3307:3307"
````
-- If you find that the build process has missing GraalVM Reachability Metadata,
- a new issue should be opened at
https://github.com/oracle/graalvm-reachability-metadata,
- and submit a PR containing GraalVM Reachability Metadata missing from
ShardingSphere itself or dependent third-party libraries.
+- If you find that the build process has missing GraalVM Reachability
Metadata, a new issue should be opened
+ at https://github.com/oracle/graalvm-reachability-metadata, and submit a PR
containing GraalVM Reachability Metadata
+ missing from ShardingSphere itself or dependent third-party libraries.
- The master branch of ShardingSphere is not yet ready to handle unit tests in
Native Image,
you always need to build GraalVM Native Image in the process,
Plus `-DskipNativeTests` or `-DskipTests` parameter specific to `GraalVM
Native Build Tools` to skip unit tests in
Native Image.
-- The following algorithm classes are not available under GraalVM Native Image
due to https://github.com/oracle/graal/issues/5522 involved.
+- The following algorithm classes are not available under GraalVM Native Image
due
+ to https://github.com/oracle/graal/issues/5522 involved.
-
`org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineShardingAlgorithm`
-
`org.apache.shardingsphere.sharding.algorithm.sharding.inline.ComplexInlineShardingAlgorithm`
-
`org.apache.shardingsphere.sharding.algorithm.sharding.hint.HintInlineShardingAlgorithm`
-- At this stage, ShardingSphere Proxy in the form of GraalVM Native Image does
not support the use of `Row Value Expressions`
- with Groovy syntax, which first results in the `actualDataNodes` property of
the `Sharding` feature being only
- configurable using a pure list, such as `ds_0.t_order_0, ds_0.t_order_1` or
`ds_0.t_user_0, ds_15.t_user_1023`. This
- issue is tracked in https://github.com/oracle/graal/issues/5522 .
+- At this stage, ShardingSphere Proxy in the form of GraalVM Native Image does
not support the use
+ of `Row Value Expressions` with Groovy syntax, which first results in the
`actualDataNodes` property of the `Sharding`
+ feature being only configurable using a pure list, such as `ds_0.t_order_0,
ds_0.t_order_1`
+ or `ds_0.t_user_0, ds_15.t_user_1023`. This issue is tracked in
https://github.com/oracle/graal/issues/5522 .
- This section assumes a Linux (amd64, aarch64), MacOS (amd64) or Windows
(amd64) environment.
If you are on MacOS (aarch64/M1) environment, you need to follow
https://github.com/oracle/graal/issues/2666 which is
not closed yet.
+- 'org.apache.shardingsphere:shardingsphere-cluster-mode-repository-etcd' is
affected by
+ https://github.com/micronaut-projects/micronaut-gcp/issues/532 and cannot be
used.
+
## Premise
1. Install and configure `GraalVM Community Edition` or `Oracle GraalVM` for
JDK 17 according
to https://www.graalvm.org/downloads/. Or use `SDKMAN!`. If you wish to use
`Oracle GraalVM`
with [GraalVM Free Terms and Conditions
license](https://www.oracle.com/downloads/licenses/graal-free-license.html),
- the following command should be changed to `sdk install java 17.0.8-graal`。
+ the following command should be changed to `sdk install java 17.0.8-graal`.
```shell
sdk install java 17.0.8-graalce
@@ -118,12 +122,11 @@ sdk install java 17.0.8-graalce
./mvnw -am -pl distribution/proxy-native -B -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 used by ShardingSphere Proxy, the second
parameter is the `/conf` folder
- containing `server.yaml` written by you, the third parameter is the Address
of the bound port, and the fourth parameter is
- Force Start, if it is true, it will ensure that ShardingSphere Proxy Native
can start normally no matter whether it
- is connected or not.
- Assuming the folder `./custom/conf` already exists, the example is
+3. To start Native Image through the command line, you need to bring 4
parameters. The first parameter is the `Port`
+ used by ShardingSphere Proxy, the second parameter is the `/conf` folder
containing `server.yaml` written by you, the
+ third parameter is the `Address` of the bound port, and the fourth
parameter is `Force Start`, if it is true, it will
+ ensure that ShardingSphere Proxy Native can start normally no matter
whether it is connected or not. Assuming the
+ folder `./custom/conf` already exists, the example is
```bash
./apache-shardingsphere-proxy-native 3307 ./custom/conf "0.0.0.0" false
@@ -151,13 +154,14 @@ services:
- "3307:3307"
```
-- If you don't make any changes to the Git Source, the commands mentioned
above will use `oraclelinux:9-slim` as the Base Docker Image.
- But if you want to use a smaller Docker Image like `busybox:glic`,
`gcr.io/distroless/base` or `scratch` as the Base Docker Image, you need
according
+- If you don't make any changes to the Git Source, the commands mentioned
above will use `oraclelinux:9-slim` as the
+ Base Docker Image. But if you want to use a smaller Docker Image like
`busybox:glic`, `gcr.io/distroless/base` or
+ `scratch` as the Base Docker Image, you need according
to
https://www.graalvm.org/latest/reference-manual/native-image/guides/build-static-executables/,
add operations such as `-H:+StaticExecutableWithDynamicLibC` to `jvmArgs` as
the `native profile` of `pom.xml`.
Also note that some 3rd-party dependencies will require more system
libraries such as `libdl` to be installed in
- the `Dockerfile`.
- So make sure to tune `distribution/proxy-native` according to your usage
`pom.xml` and `Dockerfile` below.
+ the `Dockerfile`. So make sure to tune `distribution/proxy-native` according
to your usage `pom.xml` and `Dockerfile`
+ below.
# Observability
@@ -167,8 +171,8 @@ services:
- You can observe GraalVM Native Image using a series of command line tools or
visualization tools available
at https://www.graalvm.org/latest/tools/, and use VSCode to debug it
according to its requirements.
- If you are using IntelliJ IDEA and want to debug the generated GraalVM
Native Image, You can
- follow
https://blog.jetbrains.com/idea/2022/06/intellij-idea-2022-2-eap-5/#Experimental_GraalVM_Native_Debugger_for_Java
+ If you are using IntelliJ IDEA and want to debug the generated GraalVM
Native Image, You can follow
+
https://blog.jetbrains.com/idea/2022/06/intellij-idea-2022-2-eap-5/#Experimental_GraalVM_Native_Debugger_for_Java
and its successors. If you are not using Linux, you cannot debug GraalVM
Native Image, please pay attention
to https://github.com/oracle/graal/issues/5648 which has not been closed yet.