Skip to content

doc(server): sync server-core with master - #488

Merged
imbajin merged 1 commit into
apache:masterfrom
bitflicker64:doc-sync/server-server-core
Sep 6, 2026
Merged

doc(server): sync server-core with master#488
imbajin merged 1 commit into
apache:masterfrom
bitflicker64:doc-sync/server-server-core

Conversation

@bitflicker64

@bitflicker64 bitflicker64 commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

Syncs the server-core docs (en and cn) against apache/hugegraph master at 36811483a (1.7.0).
Every default and allowed value below was read from the Options class or the conf template the
server actually reads, not from the previous doc text.

page what was wrong what changed source (file:line on master)
config/config-option.md store.schema, store.system, raft.endpoint, raft.use_snapshot documented as graph options, but no such keys exist removed the four rows hugegraph-server/hugegraph-core/.../config/CoreOptions.java (no such options; absent from the whole tree)
config/config-option.md raft.group_peers listed under the graph properties file moved to the Rest Server table with its real default 127.0.0.1:8090 hugegraph-server/hugegraph-api/.../config/ServerOptions.java:585
config/config-option.md raft.path default ./raft-log ./raftlog CoreOptions.java:108
config/config-option.md raft.rpc_timeout default 60000 and no unit 60, described as seconds CoreOptions.java:229
config/config-option.md raft.rpc_threads default 80 max(CPUs * 2, 80) CoreOptions.java:213
config/config-option.md oltp.concurrent_threads default 10 max(10, CPUs / 2) CoreOptions.java:403
config/config-option.md computer.config default /conf/computer.yaml ./conf/computer.yaml CoreOptions.java:630
config/config-option.md store described as "the database name like Cassandra Keyspace" "The backend database namespace." CoreOptions.java:64
config/config-option.md backend default rocksdb, serializer default binary and its allowed values listed cassandra/mysql option defaults memory and text, with a note that the shipped graph templates set rocksdb/hstore and binary; serializer values are text/binary/binaryscatter plus backend-registered ones CoreOptions.java:49,78, backend/serializer/SerializerFactory.java, hugegraph-dist/src/assembly/static/conf/graphs/hugegraph.properties:22-27
config/config-option.md search.text_analyzer and _mode listed a word analyzer and its modes removed; the seven analyzers on master are ansj, hanlp, smartcn, jieba, jcseg, mmseg4j, ikanalyzer analyzer/AnalyzerFactory.java:36-53, CoreOptions.java:603,613
config/config-option.md 26 CoreOptions keys undocumented added serializer.buffer_max_capacity, schema.init_template, schema.index_rebuild_using_pushdown, query.trust_index, query.max_indexes_available, query.dedup_option, oltp.query_batch_size, oltp.query_batch_avg_degree_ratio, oltp.query_batch_expect_degree, task.schedule_period, task.retry, k8s.operator_template, k8s.quota_template, pd.peers, graphspace, alias.graph.id, graph.read_mode, the four memory.* keys and the five missing raft.snapshot*/raft.install_snapshot_rpc_timeout keys CoreOptions.java:85,701,534,56,709,717,429,437,446,281,326,637,644,650,681,688,694,656-674,139-160,237
config/config-option.md the raft options were presented as current grouped into a collapsed block noting the shipped templates mark them deprecated conf/graphs/hugegraph.properties:59-61
config/config-option.md server.id described as "used for license verification" "The optional legacy id of hugegraph-server." ServerOptions.java (SERVER_ID)
config/config-option.md gremlinserver.max_route default 8 2 * CPUs ServerOptions.java (GREMLIN_SERVER_MAX_ROUTE)
config/config-option.md auth.cache_expire described as "expiration time of vertex cache" "The expiration time in seconds of auth cache in auth client and auth server." hugegraph-server/hugegraph-core/.../config/AuthOptions.java (AUTH_CACHE_EXPIRE)
config/config-option.md 12 rest-server keys undocumented added graphs.enable_dynamic_create_drop, init_store.enabled, server.role_election, server.node_id, server.node_role, server.graphspace, server.service_id, server.path_graphspace, server.start_ignore_single_graph_error, server.event_hub_threads, restserver.task_threads, white_ip.status ServerOptions.java
config/config-option.md RoleElectionOptions was not documented at all added a collapsed block with the six server.role.* keys hugegraph-server/hugegraph-core/.../masterelection/RoleElectionOptions.java
config/config-option.md PD/Meta section had only three keys added cluster, metrics.data_to_pd, meta.use_ca, meta.ca, meta.client_ca, meta.client_key, plus hstore.partition_count and hstore.shard_count from the graph file ServerOptions.java, hugegraph-server/hugegraph-hstore/.../HstoreOptions.java:27-38
config/config-option.md meta.endpoints was listed with default http://127.0.0.1:2379 and a description implying it configures the metadata connection marked as declared but not read by any code, and pointed at pd.peers, which the meta connection is actually built from hugegraph-server/hugegraph-api/.../config/ServerOptions.java:139-144 (declared; the only hit for META_ENDPOINTS or meta.endpoints in the tree), hugegraph-server/hugegraph-api/.../core/GraphManager.java:527-541 (initMetaManager reads PD_PEERS)
config/config-option.md K8s block had three keys expanded to the full k8s/PD-service set from ServerOptions ServerOptions.java
config/config-option.md rocksdb.cache_index_and_filter_blocks, rocksdb.pin_l0_filter_and_index_blocks_in_cache, rocksdb.optimize_filters_for_hits documented as false all three are true hugegraph-server/hugegraph-rocksdb/.../RocksDBOptions.java:614,623,662
config/config-option.md compression defaults given as Java enum names (SNAPPY_COMPRESSION, NO_COMPRESSION) the config values the server accepts: snappy, none, [none, none, snappy, snappy, snappy, snappy, snappy] RocksDBOptions.java:141,151,161
config/config-option.md rocksdb.option_path and rocksdb.open_http documented (ToplingDB) removed; neither key exists in RocksDBOptions or anywhere else in the tree at this commit RocksDBOptions.java
config/config-option.md 23 RocksDBOptions keys undocumented added the block/table, memtable, sync and filter-partitioning options (rocksdb.block_size, index_type, format_version, bytes_per_sync, row_cache_capacity, memtable_*, partition_filters_and_indexes, prefix_extractor_n_bytes, and the rest) RocksDBOptions.java
config/config-option.md hbase.krb5_conf default etc/krb5.conf, hbase.truncate_timeout missing /etc/krb5.conf, added hbase.truncate_timeout=30 hugegraph-server/hugegraph-hbase/.../HbaseOptions.java
config/config-option.md (cn only) the Arthas block was duplicated, the HBase block was nested inside it so it never rendered as its own section, and the first Arthas block was missing arthas.disabledCommands de-duplicated, un-nested, row added ServerOptions.java (ARTHAS_DISABLED_COMMANDS)
config/config-option.md RPC block existed only on the cn page and was missing rpc.serialization added the block to the en page and rpc.serialization=hessian2 to both hugegraph-commons/hugegraph-rpc/.../config/RpcOptions.java
config/config-option.md Gremlin Server section listed six keys added maxContentLength, maxChunkSize, maxHeaderSize, resultIterationBatchSize, ssl.enabled hugegraph-dist/src/assembly/static/conf/gremlin-server.yaml:117-127
guides/custom-plugin.md RocksDBStoreProvider sample used newSchemaStore(String), newGraphStore(String) and version() returning 1.0 signatures now take HugeConfig, newSystemStore added, driverVersion() returns 1.11 hugegraph-rocksdb/.../RocksDBStoreProvider.java
guides/custom-plugin.md BackendStore listing was missing nine methods and had clear() instead of clear(boolean) listing rebuilt from the interface hugegraph-core/.../backend/store/BackendStore.java
guides/custom-plugin.md GraphSerializer listing was missing writeOlapVertex and readEdges added; public modifiers dropped to match the interfaces hugegraph-core/.../backend/serializer/GraphSerializer.java
guides/custom-plugin.md RocksDBOptions sample had rocksdb-data paths and the old graph/* data_disks keys rocksdb-data/data, rocksdb-data/wal and the current g/* key list RocksDBOptions.java (DATA_PATH, WAL_PATH, DATA_DISKS)
guides/custom-plugin.md DemoPlugin sample omitted supportsMinVersion/supportsMaxVersion, which the loader requires both methods added to the sample hugegraph-dist/.../dist/RegisterUtil.java (registerPlugins)
guides/custom-plugin.md "8 built-in Chinese word breakers" 7, named analyzer/AnalyzerFactory.java:36-53
guides/faq.md error text and limits: Id max length is 128, edge id 32768, index id 128 The max length of vertex id is 16384 / edge id is 65536; index ids over 32 bytes are hashed backend/serializer/BytesBuffer.java:63-64,76, structure/HugeVertex.java:186-195, structure/HugeEdge.java:158-163
guides/faq.md "An EdgeLabel does not support connecting multiple pairs of VertexLabels" it does: link() accumulates pairs; sourceLabel()/targetLabel() are deprecated single-pair methods schema/builder/EdgeLabelBuilder.java:411-418, schema/EdgeLabel.java:203-212,254-257
guides/faq.md the graph clear answer did not give the confirmation string added ?confirm_message=I'm sure to delete all data hugegraph-api/.../api/profile/GraphsAPI.java:79,589-603
guides/desgin-concept.md "supports three ID strategies" while listing four, and CUSTOMIZE_UUID was absent four strategies, CUSTOMIZE_UUID and a useCustomizeUuidId() example added type/define/IdStrategy.java, schema/VertexLabel.java:122, schema/builder/VertexLabelBuilder.java:323
guides/desgin-concept.md (en) the self-loop paragraph had lost its comparison clause, the sortKey bullets were garbled, the TinkerPop link was pasted twice, and one heading was a duplicate of the previous one restored from the cn text, headings and link fixed mirrors content/cn/docs/guides/desgin-concept.md
guides/desgin-concept.md atomicity example cited Cassandra, which 1.7.0 no longer supports RocksDB only backend/store/BackendProviderFactory.java:44-45 (ALLOWED_BACKENDS)
language/hugegraph-gremlin.md Vertex features UserSuppliedIds, StringIds, CustomIds, MultiProperties, DuplicateMultiProperties shown as false all five are true structure/HugeFeatures.java:116,136,240,250,256
language/hugegraph-gremlin.md Edge features StringIds and CustomIds shown as false; UniformListValues shown as false all true structure/HugeFeatures.java:116,136,349-356
language/hugegraph-gremlin.md four step links pointed at the wrong anchor (#add-step for and, #addedge-step for count and path) and two URLs had stray dots (apac.he.org, docs/c.urrent) anchors and URLs corrected; the V row is now labelled "vertex steps" tinkerpop reference anchors
language/hugegraph-example.md the relationship table listed five edges while the text and the schema below it use six battled row added with its time property the page's own 2.1 Graph Schema block
language/hugegraph-example.md "each edge label can only act on one pair of source and target vertex labels" corrected the same way as the FAQ entry schema/builder/EdgeLabelBuilder.java:411-418
language/hugegraph-example.md the "pluto is not his own cohabitant" snippet had unbalanced parentheses where(is(neq(pluto))).values('name') Gremlin syntax

Verified with no change needed: guides/architectural.md (backend list already matches ALLOWED_BACKENDS, all internal links resolve) and the six frozen benchmark reports under performance/ (all images and links resolve; numbers untouched).

Rebuild the config option tables from CoreOptions, AuthOptions, RoleElectionOptions,
ServerOptions, RocksDBOptions and HstoreOptions so every key, default and allowed value
matches master: drop the keys that no longer exist, add the 60+ that were missing, and
correct wrong defaults such as raft.path, raft.rpc_timeout, gremlinserver.max_route and
three RocksDB block cache flags. Also refresh the plugin SPI listings, the TinkerPop
feature tables, the vertex and edge id length limits, the CUSTOMIZE_UUID id strategy and
the edge label multi-link behaviour, and fix broken Gremlin step links.

Mark meta.endpoints as declared but unread: no code reads ServerOptions.META_ENDPOINTS,
and GraphManager.initMetaManager builds the meta connection from pd.peers instead.
@bitflicker64
bitflicker64 force-pushed the doc-sync/server-server-core branch from d6f464a to b8b2037 Compare September 5, 2026 19:14

@bitflicker64 bitflicker64 left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Blocking: no. Summary: Well-sourced documentation sync; I checked every config row on both the en and cn pages against the option declarations at apache/hugegraph@36811483a, and every default, allowed-value list and removal holds up, as do the interface listings, TinkerPop feature flags, id-length limits and the confirm_message value. Three minor items inline, one of which is the single k8s.algorithms row whose default column holds a Java symbol instead of a value. Evidence: extracted all 282 option declarations (278 distinct keys) from CoreOptions, ServerOptions, AuthOptions, RoleElectionOptions, RpcOptions, RocksDBOptions, HbaseOptions and HstoreOptions, then diffed key, default and description against the 321 rows on each page; confirmed the six keys dropped from the en page (seven on cn, including the misspelt snowflake.datecenter_id) have no occurrence in the tree; and read BackendStore, GraphSerializer, HugeGraphPlugin, RocksDBStoreProvider, HugeFeatures, BytesBuffer, HugeVertex/HugeEdge, EdgeLabelBuilder, IdStrategy, AnalyzerFactory, SerializerFactory, BackendProviderFactory, GraphsAPI and GraphManager.initMetaManager directly. CI on b8b2037: eight checks green, publish skipped.

| k8s.operator_template | ./conf/operator-template.yaml | The path of operator container template. |
| k8s.quota_template | ./conf/resource-quota-template.yaml | The path of resource quota template. |
| search.text_analyzer | ikanalyzer | Choose a text analyzer for searching the vertex/edge properties, available type are [ansj, hanlp, smartcn, jieba, jcseg, mmseg4j, ikanalyzer]. The shipped graph templates set `jieba`. If use 'ikanalyzer', need download jar from 'https://github.com/apache/hugegraph-doc/raw/ik_binary/dist/server/ikanalyzer-2012_u6.jar' to lib directory |
| search.text_analyzer_mode | smart | Specify the mode for the text analyzer, the available mode of analyzer are {ansj: [BaseAnalysis, IndexAnalysis, ToAnalysis, NlpAnalysis], hanlp: [standard, nlp, index, nShort, shortest, speed], smartcn: [], jieba: [SEARCH, INDEX], jcseg: [Simple, Complex], mmseg4j: [Simple, Complex, MaxWord], ikanalyzer: [smart, max_word]}. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🧹 The search.text_analyzer row above gained "The shipped graph templates set jieba", but this row still shows only the option default smart, with no note that both shipped templates set search.text_analyzer_mode=INDEX:

hugegraph-server/hugegraph-dist/src/assembly/static/conf/graphs/hugegraph.properties
hugegraph-server/hugegraph-dist/src/assembly/static/conf/graphs/hstore.properties.template

That matters here because smart is not a legal mode for the analyzer those same templates select:

// hugegraph-core/.../analyzer/JiebaAnalyzer.java:35
public static final List<String> SUPPORT_MODES = ImmutableList.of("SEARCH", "INDEX");

The description column does spell out jieba: [SEARCH, INDEX], so an attentive reader will not be caught out; it is the default column and the missing template note that are out of step with the row above. Could you append "The shipped graph templates set INDEX." to the description, matching the sibling row? Same row on content/cn/docs/config/config-option.md:184.

> | server.default_oltp_k8s_namespace | hugegraph-server | The default oltp namespace for HugeGraph default graph space. |
> | server.default_olap_k8s_namespace | hugegraph-computer-system | The default olap namespace for HugeGraph default graph space. |
> | k8s.internal_algorithm | [page-rank, degree-centrality, wcc, triangle-count, rings, rings-with-filter, betweenness-centrality, closeness-centrality, lpa, links, kcore, louvain, clustering-coefficient, ppr, subgraph-match] | The names of the built-in k8s algorithms. |
> | k8s.algorithms | See `ServerOptions.K8S_ALGORITHMS` | The `name:paramsClass` mapping of the built-in k8s algorithms. |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🧹 Two gaps in this block, which the PR description says was "expanded to the full k8s/PD-service set from ServerOptions":

  1. k8s.internal_algorithm_image_url is missing (ServerOptions.java:687-693, default "", description "K8s internal algorithm image url"). Comparing this page's key set against all 278 distinct option keys in the eight holders at 36811483a, it is the only one left undocumented, on both the en and cn pages.

  2. This row is the only one in the file whose default column holds a Java symbol rather than a value. K8S_ALGORITHMS is a ConfigListOption defaulting to one name:paramsClass entry per name in k8s.internal_algorithm, starting page-rank:org.apache.hugegraph.computer.algorithm.centrality.pagerank.PageRankParams. The block is already collapsed, so listing them is fine; otherwise "one name:paramsClass entry per algorithm in k8s.internal_algorithm" would say more than a symbol the reader cannot open.

Same block on content/cn/docs/config/config-option.md:325.

- How to delete all data from a graph

An administrator can call `DELETE /graphspaces/{graphspace}/graphs/{graph}/clear`. The request must include the `confirm_message` required by the source code; see the [Graph API](../clients/restful-api/graphs) for the exact format. This operation removes schemas, vertices, edges, and indexes.
An administrator can call `DELETE /graphspaces/{graphspace}/graphs/{graph}/clear?confirm_message=I'm sure to delete all data`. The `confirm_message` query parameter must match that value exactly, otherwise the request is rejected. See the [Graph API](../clients/restful-api/graphs) for details. This operation removes schemas, vertices, edges, and indexes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🧹 Spelling out the confirmation string is a real improvement over the old "see the Graph API" pointer, and the value matches GraphsAPI.CONFIRM_CLEAR. But the URL as written carries five raw spaces and an apostrophe:

DELETE /graphspaces/{graphspace}/graphs/{graph}/clear?confirm_message=I'm sure to delete all data

Pasted into curl that either breaks on the quote or truncates at the first space, and the server check is an exact match:

// api/profile/GraphsAPI.java:604
E.checkArgument(CONFIRM_CLEAR.equals(message), "Please take the message: %s", CONFIRM_CLEAR);

so a partially-transmitted value just fails. Could you show the percent-encoded form in the URL, ?confirm_message=I%27m%20sure%20to%20delete%20all%20data, and keep the plain sentence in the surrounding prose? Same line on content/cn/docs/guides/faq.md:78.

@imbajin imbajin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

中文部分与源码保持一致且表述清晰,评分 9.2/10,按规则可直接合并。

@imbajin
imbajin merged commit 276876f into apache:master Sep 6, 2026
9 checks passed
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.

2 participants