Skip to content
Open
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
4 changes: 2 additions & 2 deletions content/cn/docs/quickstart/hugegraph/hugegraph-hstore.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ HugeGraph-Store 是 HugeGraph 分布式版本的存储节点组件,负责实
#### 2.1 前置条件

- 操作系统:Linux 或 macOS(Windows 尚未经过完整测试)
- Java 版本:≥ 11(编译期强制校验,`bin/start-hugegraph-store.sh` 启动时会再次检查)
- Maven 版本:≥ 3.5.0
- Java 版本:≥ 17(适用于 HugeGraph 1.8.0+,编译期强制校验,`bin/start-hugegraph-store.sh` 启动时会再次检查;1.7.0 是最后一个支持 Java 11 的版本)
- Maven 版本:≥ 3.6.3(从源码编译时)
- 如需进行多节点部署,请先部署 HugeGraph-PD

### 3 部署
Expand Down
6 changes: 3 additions & 3 deletions content/cn/docs/quickstart/hugegraph/hugegraph-pd.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ PD 监听三个端口:
#### 2.1 前置条件

- 操作系统:Linux 或 macOS(Windows 尚未经过完整测试)
- Java 版本:≥ 11
- Maven 版本:≥ 3.5.0
- Java 版本:≥ 17(适用于 HugeGraph 1.8.0+;1.7.0 是最后一个支持 Java 11 的版本)
- Maven 版本:≥ 3.6.3(从源码编译时)

### 3 部署

Expand Down Expand Up @@ -301,7 +301,7 @@ HG_PD_RAFT_PEERS_LIST: pd0:8610,pd1:8610,pd2:8610
./bin/start-hugegraph-pd.sh
```

脚本要求 `PATH` 或 `JAVA_HOME` 中有 11 及以上版本的 JDK;如果发现已有 Java 进程在使用本安装目录的 `conf` 目录,脚本会直接退出,不做任何事。
脚本要求 `PATH` 或 `JAVA_HOME` 中有 17 及以上版本的 JDK(1.7.0 要求 11 及以上);如果发现已有 Java 进程在使用本安装目录的 `conf` 目录,脚本会直接退出,不做任何事。

支持的参数:

Expand Down
51 changes: 39 additions & 12 deletions content/cn/docs/quickstart/hugegraph/hugegraph-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,44 @@ flowchart TD

## 2 依赖

### 2.1 安装 Java 11 (JDK 11)
<span id="21-安装-java-11-jdk-11"></span>

HugeGraph 1.7.0 中的 `hugegraph-server` 模块使用 Java 11 编译,运行和源码构建均需使用 Java 11 或更高版本。
### 2.1 安装 Java 17 (JDK 17)

**在继续阅读前,请先执行 `java -version` 命令确认 JDK 版本。**

> 1.7.0 起不再支持 Java 8。`bin/hugegraph-server.sh` 在低于 Java 11 的环境下会直接拒绝启动。
从 HugeGraph 1.8.0 开始使用 **Java 17**;**1.7.0 是最后一个支持 Java 11 的版本**。
所有模块的源码构建要求 **JDK 17 和 Maven 3.6.3 或更高版本**,Server、PD 和 Store 的运行环境统一使用 **JDK 17**。
Server 安全检查(`-s true`)要求 Java 17 到 23 以及可读的 `conf/java-security.properties`;在 Java 24 或更高版本上,需以 `-s false` 启动 Server(JDK 24 通过 JEP 486 移除了 Security Manager)。

> 安全检查默认开启,会安装 `HugeSecurityManager`,它要求 Java 11 到 23。JDK 24 移除了 Security Manager([JEP 486](https://openjdk.org/jeps/486)),因此在 Java 24 及更高版本上必须关闭该检查后再启动服务:`bin/start-hugegraph.sh -s false`。
**在继续阅读前,请先执行 `java -version` 命令确认 JDK 版本。**

> 源码构建还需要 Maven 3.5.0 或更高版本。
> [!NOTE]
> **TinkerPop 兼容性**
>
> HugeGraph 1.8.0 使用 TinkerPop 3.8.1 和 Groovy 4.0.25。请使用 Server 随包提供的 Gremlin 配置。
> 序列化器类从 `org.apache.tinkerpop.gremlin.driver.ser` 移至 `org.apache.tinkerpop.gremlin.util.ser`,
> 并需保留配置中的 HugeGraph registries。默认脚本引擎仍为 Gremlin Groovy。
> 部署前应检查应用脚本与 TinkerPop 3.5.1 到 3.8.1 整个升级区间的兼容性;本次升级不会将远程请求切换为 GremlinLang。
>
> 顶点和边属性的 `supportsUniformListValues()` 现在返回 `false`,依赖 `Graph.Features` 的客户端需复核能力判断。
> 按 schema 定义的 `valueList()`/`LIST` 属性仍支持,仅此标志变化无需重写既有列表数据。
>
> 遍历中途的扫描保留上游输入数量:图中有三个顶点时,`g.V().V().count()` 返回 `9L`。
> `P.typeOf()` 作为本地过滤执行,也支持放在取反或组合谓词中;单独使用类型过滤不会利用后端索引。
>
> 随包 Driver 和 Console 配置使用 GraphBinary V1:schema 结果为标准 map,Blob 为二进制值,返回图元素内的 Blob 也适用。
> 默认 HTTP JSON 使用的 Untyped GraphSON V1 保留 Tree 的旧 `key`/`value` 数组结构,支持标量和图元素作为 key。
> Optional 返回其内容,空值返回 null;File 保留 `{"file": "name"}` 的 map 结构,使用文件名,嵌套结果也适用。
> HugeGraph 枚举返回名称;`graph.schema()` 返回包含 property key、vertex label、edge label 和 index label 列表的 map。
> Typed GraphSON 仅支持受支持的简单标量值与 ID,不能替代所有图元素或元数据对象的非类型化序列化;
> Typed GraphSON V1 已禁用,因为基于类名的反序列化可在认证前构造 Java 对象;typed V2/V3 仍可使用。
> 随包导入的 Cypher 谓词工厂使用兼容实现,也支持重放 `EXPLAIN` 返回的 Gremlin 翻译结果。
> 命名 `GValue` 谓词在复用或克隆时保留绑定;命名 `limit()`/`range()` 边界的计数行为与字面量边界一致。
> 本地混合 ID 集合保留字符串、数值和 UUID 各自的类型匹配;全字符串集合继续使用标准字符串 ID 比较语义。
> 本地边 ID 过滤支持混合字符串形式和原生边 ID,保持成员匹配及计数一致。
> Jackson JSON 和 YAML 模块使用同一兼容版本,也支持 Kubernetes kubeconfig 扩展中的小数值。
> Count 过滤仅在每个谓词分支均能证明截断安全时采用范围优化;不支持的否定集合或自定义谓词分支保留完整计数。
> DATE schema 属性支持写入及索引等值/范围查询中的 `OffsetDateTime`,按 instant 转为毫秒;小于毫秒的精度被截断,既有 DATE 数据无需迁移。
> 客户端配置和验证细节见 [Server 运行时文档](https://github.com/apache/hugegraph/blob/master/docs/server-runtime.md)。

## 3 部署

Expand Down Expand Up @@ -160,13 +187,13 @@ mvn package -DskipTests -ntp
[INFO] BUILD SUCCESS
```

执行成功后,根目录 `target/` 下会生成主线聚合包(当前仓库版本属性为 1.7.0):
执行成功后,根目录 `target/` 下会生成主线聚合包(当前仓库版本属性为 1.8.0):

```text
target/apache-hugegraph-1.7.0.tar.gz
target/apache-hugegraph-1.8.0.tar.gz
```

该文件名中的版本号来自源码的 `revision` 属性;它不会把主线构建变成 ASF 发布物料。构建过程还会在仓库根目录生成 `apache-hugegraph-1.7.0/` 聚合目录,其中的 Server 子目录名由 Server 模块的 `final.name` 决定,例如当前为 `apache-hugegraph-server-1.7.0`。若只保留了 tar 包,则先执行 `tar zxf target/apache-hugegraph-1.7.0.tar.gz` 再进入该目录。
该文件名中的版本号来自源码的 `revision` 属性;它不会把主线构建变成 ASF 发布物料。构建过程还会在仓库根目录生成 `apache-hugegraph-1.8.0/` 聚合目录,其中的 Server 子目录名由 Server 模块的 `final.name` 决定,例如当前为 `apache-hugegraph-server-1.8.0`。若只保留了 tar 包,则先执行 `tar zxf target/apache-hugegraph-1.8.0.tar.gz` 再进入该目录。

默认构建会打包 `rocksdb`、`hbase` 和 `hstore` 三个后端模块,并把它们记录在 `hugegraph-dist` jar 内的 `backend.properties` 资源的 `backends` 配置项中。若只需要包含 RocksDB 的精简发布包,可加上 `-Drocksdb-only`:

Expand Down Expand Up @@ -526,10 +553,10 @@ Connecting to HugeGraphServer (http://127.0.0.1:8080/graphs)......OK
| 参数 | 取值 | 默认值 | 作用 |
|---|---|---|---|
| `-d` | `true`、`false` | `true` | 守护进程模式。`-d false` 时脚本留在前台,并把 `SIGTERM`/`SIGINT` 转发给服务进程 |
| `-g` | `zgc` 或 `ZGC` | 不填则用 G1GC | 选择垃圾回收器。只接受 ZGC,其他取值会直接终止启动;ZGC 需要 Java 11 及以上 |
| `-g` | `g1`、`G1`、`zgc`、`ZGC` | JVM 默认值 | 选择垃圾回收器(`g1`/`G1` 设置 `-XX:+UseG1GC`;`zgc`/`ZGC` 设置 `-XX:+UseZGC`)。不填则使用 JVM 默认收集器配置 |
| `-m` | `true`、`false` | `false` | 安装基于 crontab 的监控任务(`bin/start-monitor.sh`),仅用于虚拟机和物理机部署 |
| `-p` | `true`、`false` | `false` | 预加载示例图,见 5.1.4 |
| `-s` | `true`、`false` | `true` | 开启安全检查(`HugeSecurityManager`)。要求 Java 11 到 23,且 `conf/java-security.properties` 可读 |
| `-s` | `true`、`false` | `true` | 开启安全检查(`HugeSecurityManager`),要求 Java 17 到 23 以及 `conf/java-security.properties` 可读。在 Java 24+ 上需传 `-s false` |
| `-j` | JVM 参数 | 空 | 追加到服务命令行的额外 JVM 参数 |
| `-t` | 秒 | `30` | 判定启动失败前等待服务响应的时长 |
| `-y` | `true`、`false` | `false` | 开启 OpenTelemetry agent 上报链路追踪 |
Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/quickstart/hugegraph/hugegraph-hstore.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ Each Store node keeps graph data in RocksDB and replicates it with Raft (JRaft):
#### 2.1 Requirements

- Operating System: Linux or macOS (Windows has not been fully tested)
- Java version: ≥ 11 (enforced by the build and re-checked by `bin/start-hugegraph-store.sh`)
- Maven version: ≥ 3.5.0
- Java version: ≥ 17 for HugeGraph 1.8.0+ (enforced by the build and re-checked by `bin/start-hugegraph-store.sh`; 1.7.0 is the last release supporting Java 11)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Important: This line says Java ≥ 17 is "enforced by the build", but the build accepts only JDK 17, so a reader on JDK 21 who follows section 3.2 here fails before compiling. This line came from the fix for the earlier PD/HStore thread.

Evidence, apache/hugegraph master at 06f90a9f0: root pom.xml sets java.supported.version.range to [17,18) ("Java 17 is the only qualified build/runtime release") and the enforcer applies it. mvn -N validate there fails on JDK 26 with "not in the allowed range [17,18)" and passes on JDK 17. Only the start scripts accept newer runtimes. EN hugegraph-pd.md line 28 (beside its own section 3.2), CN hugegraph-hstore.md line 25 and CN hugegraph-pd.md line 28 say the same.

Please split build and run on all four lines, for example "Java 17 for HugeGraph 1.8.0+ (the Maven build accepts only JDK 17; the start script rejects anything older; 1.7.0 is the last release supporting Java 11)".

- Maven version: ≥ 3.6.3 (for building from source)
- Deploy HugeGraph-PD first for multi-node deployment

### 3 Deployment
Expand Down
7 changes: 4 additions & 3 deletions content/en/docs/quickstart/hugegraph/hugegraph-pd.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ PD listens on three ports:
#### 2.1 Requirements

- Operating System: Linux or macOS (Windows has not been fully tested)
- Java version: ≥ 11
- Maven version: ≥ 3.5.0
- Java version: ≥ 17 for HugeGraph 1.8.0+ (1.7.0 is the last release supporting Java 11)
- Maven version: ≥ 3.6.3 (for building from source)

### 3 Deployment

Expand Down Expand Up @@ -303,7 +303,8 @@ In the PD installation directory, execute:
./bin/start-hugegraph-pd.sh
```

The script requires a JDK of at least version 11 on `PATH` or in `JAVA_HOME`, and it exits without doing anything if it finds a Java process already using this installation's `conf` directory.
The script requires Java 17 or later on `PATH` or in `JAVA_HOME` (Java ≥ 11 on 1.7.0).
It exits without doing anything if it finds a Java process already using this installation's `conf` directory.

Supported flags:

Expand Down
56 changes: 44 additions & 12 deletions content/en/docs/quickstart/hugegraph/hugegraph-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,49 @@ flowchart TD

## 2 Dependency for Building/Running

### 2.1 Install Java 11 (JDK 11)
<span id="21-install-java-11-jdk-11"></span>

The `hugegraph-server` module in HugeGraph 1.7.0 is compiled with Java 11. Running and building it from source require Java 11 or later.
### 2.1 Install Java 17 (JDK 17)

**Before continuing, run `java -version` to confirm your JDK version.**

> Java 8 is no longer supported starting from 1.7.0. `bin/hugegraph-server.sh` refuses to start on anything older than Java 11.
Starting with HugeGraph 1.8.0, use **Java 17**; **1.7.0 is the last release supporting Java 11**.
Comment thread
imbajin marked this conversation as resolved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Minor: This sets the 1.8.0 boundary, but pages outside this PR still give Java 11 as the requirement for master and the next release.

Evidence at this head: content/en/docs/guides/faq.md line 17 (CN line 17) tells readers with a startup crash to confirm "Java 11 or later". content/en/docs/contribution-guidelines/validate-release.md lines 8, 26 and 140 (CN lines 8, 24 and 129) tell release verifiers to use Java 11, which fails the [17,18) enforcer on master at 06f90a9f0 and will fail for the 1.8.0 vote. hugegraph-server-idea-setup.md line 19 (CN line 18) asks for Java 11 to build master in IDEA, where maven.compiler.release is now 17.

Please update those pages here or in a linked follow-up, scoping Java 11 to 1.7.0 and earlier.

Build all modules with **JDK 17 and Maven 3.6.3 or later**, and run Server, PD and Store with **JDK 17**.
Comment thread
imbajin marked this conversation as resolved.
Server security check (`-s true`) requires Java 17 to 23 and a readable `conf/java-security.properties`;
on Java 24 or later, start Server with `-s false` (JDK 24+ dropped Security Manager via JEP 486).

> The security check is on by default and installs `HugeSecurityManager`, which needs Java 11 to 23. JDK 24 removed the Security Manager ([JEP 486](https://openjdk.org/jeps/486)), so on Java 24 or later you must start the service with the check disabled: `bin/start-hugegraph.sh -s false`.
**Before continuing, run `java -version` to confirm your JDK version.**

> Building from source also needs Maven 3.5.0 or later.
> [!NOTE]
> **TinkerPop compatibility**
>
> HugeGraph 1.8.0 uses TinkerPop 3.8.1 and Groovy 4.0.25. Use the Gremlin configuration files bundled with Server.
> Serializer classes move from `org.apache.tinkerpop.gremlin.driver.ser` to `org.apache.tinkerpop.gremlin.util.ser`;
> retain the supplied HugeGraph registries. Gremlin Groovy remains the default engine.
> Check application scripts against the TinkerPop 3.5.1 to 3.8.1 upgrade interval; this upgrade does not switch remote requests to GremlinLang.
>
> `supportsUniformListValues()` now returns `false` for vertex and edge properties, so clients that inspect `Graph.Features` must adjust that capability check.
> Schema-defined `valueList()`/`LIST` properties remain supported; this flag change alone does not require rewriting existing list data.
>
> A mid-traversal scan retains its input multiplicity: with three vertices, `g.V().V().count()` returns `9L`.
> `P.typeOf()` runs as a local filter, including in negated or combined predicates; it does not use backend indexes on its own.
>
> The bundled Driver and Console configurations use GraphBinary V1: schema results are standard maps and Blob values are binary,
> including inside returned graph elements. Default HTTP JSON with untyped GraphSON V1 preserves the legacy Tree `key`/`value` array, with scalar or element
> keys.
> Optional results carry their value or null when empty; File results keep the map shape `{"file": "name"}` with the file name, including in nested results.
> HugeGraph enums return their names; `graph.schema()` returns a map with property key, vertex label, edge label and index label lists.
> Typed GraphSON is available only for supported simple values and IDs, not as a replacement for untyped serialization of every graph or schema object.
> Typed GraphSON V1 is disabled because class-name deserialization can construct Java objects before authentication; typed V2/V3 remain available.
Comment thread
imbajin marked this conversation as resolved.
> The bundled Cypher predicate imports use the compatible factories, including when replaying the Gremlin translation returned by `EXPLAIN`.
> Named `GValue` predicates retain bindings when reused or cloned; named `limit()`/`range()` bounds count like literal bounds.
> Local mixed ID collections preserve typed string, number and UUID matches; all-string collections retain standard string-ID comparisons.
> Local edge ID filters accept mixed serialized strings and native edge IDs with consistent membership and count results.
> Jackson JSON and YAML modules use one compatible version, including parsing decimal-valued Kubernetes kubeconfig extensions.
> Count filtering keeps the complete count if any predicate branch has no proven safe truncation bound, including unsupported negated collections and custom
> predicates.
> DATE schema properties accept `OffsetDateTime` for writes and indexed equality/range queries, normalized by instant to milliseconds;
> sub-millisecond precision is truncated, and existing DATE data needs no migration.
> See the [server runtime documentation](https://github.com/apache/hugegraph/blob/master/docs/server-runtime.md)
> for client configuration and verification details.

## 3 Deploy

Expand Down Expand Up @@ -159,13 +191,13 @@ A successful build logs:
[INFO] BUILD SUCCESS
```

The build creates an aggregate master archive under repository-root `target/` (the current source version property is 1.7.0):
The build creates an aggregate master archive under repository-root `target/` (the current source version property is 1.8.0):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Minor: This now says the source version is 1.8.0, but the version-scope note at line 17 of the same page still says a master build is not an ASF release "even if its version number matches 1.7.0". With master at <revision>1.8.0</revision> (apache/hugegraph 06f90a9f0), that example no longer applies.

Please reword line 17 to not tie the master build to 1.7.0, for example "even if its version number matches a release". CN line 17 ("即使包内版本号相同也不代表与 1.7.0 发布包相同") needs the same change.


```text
target/apache-hugegraph-1.7.0.tar.gz
target/apache-hugegraph-1.8.0.tar.gz
```

The filename version comes from source `revision`; it does not make the build an ASF release artifact. The build also creates repository-root `apache-hugegraph-1.7.0/`, containing a Server directory named by that module's `final.name`, currently `apache-hugegraph-server-1.7.0`. If retaining only the archive, first run `tar zxf target/apache-hugegraph-1.7.0.tar.gz`, then enter the Server directory.
The filename version comes from source `revision`; it does not make the build an ASF release artifact. The build also creates repository-root `apache-hugegraph-1.8.0/`, containing a Server directory named by that module's `final.name`, currently `apache-hugegraph-server-1.8.0`. If retaining only the archive, first run `tar zxf target/apache-hugegraph-1.8.0.tar.gz`, then enter the Server directory.

Default builds bundle `rocksdb`, `hbase`, and `hstore` modules, listed in `backends` within `backend.properties` in the `hugegraph-dist` JAR. For a RocksDB-only distribution, add `-Drocksdb-only`:

Expand Down Expand Up @@ -525,10 +557,10 @@ This indicates the successful creation of the sample graph.
| Option | Values | Default | Purpose |
|---|---|---|---|
| `-d` | `true`, `false` | `true` | Daemon mode. With `-d false` the script stays in the foreground and forwards `SIGTERM`/`SIGINT` to the server. |
| `-g` | `zgc` or `ZGC` | omit for G1GC | Garbage collector to use. Only ZGC is accepted, any other value aborts the startup. ZGC needs Java 11 or later. |
| `-g` | `g1`, `G1`, `zgc`, `ZGC` | JVM default | Garbage collector to use (`g1`/`G1` sets `-XX:+UseG1GC`; `zgc`/`ZGC` sets `-XX:+UseZGC`). Omitting `-g` uses the JVM default collector. |
| `-m` | `true`, `false` | `false` | Install the cron-based monitor task (`bin/start-monitor.sh`). For VM and bare-metal deployments only. |
| `-p` | `true`, `false` | `false` | Preload the sample graph, as in 5.1.4. |
| `-s` | `true`, `false` | `true` | Run with the security check (`HugeSecurityManager`) enabled. It requires Java 11 to 23 and a readable `conf/java-security.properties`. |
| `-s` | `true`, `false` | `true` | Enable `HugeSecurityManager`; requires Java 17 to 23 and readable `conf/java-security.properties`. On Java 24+, start with `-s false`. |
| `-j` | JVM options | empty | Extra JVM options appended to the server command line. |
| `-t` | seconds | `30` | How long to wait for the service to answer before reporting a failed startup. |
| `-y` | `true`, `false` | `false` | Enable the OpenTelemetry agent for traces. |
Expand Down
Loading