Hi Haonan,

Nice work on #18162 -- centralizing the [ipv6]:port formatting/parsing in
UrlUtils and adding the wildcard-address filtering across the Java, Python,
and C++ clients closes a real gap, and the malformed-input tests
([::1]6667, [::1]:, [::1:6667, ...) are a good touch.

While auditing the Go and Node.js clients recently for the session pool /
redirection work, I noticed those two weren't in #18162's scope and still
parse node URLs with a naive colon split, so they can't accept an IPv6
node URL:

- Node.js (iotdb-client-nodejs, parseNodeUrls): splits on ":" and requires
exactly two parts, so "[::1]:6667" (and the legacy "::1:6667" form) is
rejected up front with "Invalid nodeUrl format".

- Go (iotdb-client-go, cluster node URL handling): takes
strings.Split(nodeUrl, ":")[0] as host and [1] as port, so "[::1]:6667"
silently parses to host "[" and an empty port rather than raising -- and
interestingly the same client already uses net.JoinHostPort on the output
side, so it's internally inconsistent.

Both are the same class of issue #18162 fixed on the other clients. I'd be
happy to bring the Go and Node.js clients to parity -- mirroring the shared
[ipv6]:port parse/format plus the wildcard-address (0.0.0.0 / :: / [::])
filtering on the redirection paths, with the same malformed-input and
IPv6-loopback test coverage.

Before I open anything: is client-side IPv6 parity something you'd like to
track under the same effort, and do you have a preference on shape -- one
combined discussion/issue for both clients, or a small PR per client
mirroring #18162's approach? Happy to go whichever way keeps it consistent
with what you just landed.

Thanks,
Zihan Dai

On Mon, Jul 13, 2026 07:46 PM, Haonan Hou <[email protected]> wrote:

> Hi all,
>
> I would like to introduce the IPv6 endpoint support improvement in PR
> #18162:
> https://github.com/apache/iotdb/pull/18162
>
> This work standardizes IPv6 endpoints as `[ipv6]:port` and improves IPv6
> address handling across IoTDB. It also prevents wildcard addresses such as
> `0.0.0.0` and `::` from being treated as connectable remote endpoints.
>
> The changes cover shared endpoint utilities, Ratis peer addresses, node
> discovery and redirection, Java Session/JDBC, Python and C++ clients,
> AINode, and Pipe.
>
> Integration tests verify:
>
> - JDBC, Session, and TableSession connections through IPv6
> - Internal communication in a 1 ConfigNode + 3 DataNode cluster
> - SchemaRegion Ratis and DataRegion IoTConsensus over IPv6
> - Pipe transmission over IPv6
> - REST and MQTT services over IPv6
>
> Comments and suggestions are welcome.
>
>
> 大家好,
>
> 我想介绍一下 PR #18162 中对 IoTDB IPv6 端点支持的完善:
> https://github.com/apache/iotdb/pull/18162
>
> 本次改动统一使用 `[ipv6]:port` 表示带端口的 IPv6 地址,并完善了 IoTDB 各模块对 IPv6
> 地址的处理。同时,客户端在节点发现和重定向时,不再将 `0.0.0.0`、`::` 等通配监听地址当作可连接的远端地址。
>
> 改动覆盖公共端点工具、Ratis 节点地址、节点发现与重定向、Java Session/JDBC、Python 和 C++ 客户端、AINode
> 以及 Pipe。
>
> 新增的集成测试验证了:
>
> - JDBC、Session 和 TableSession 通过 IPv6 连接
> - 1 个 ConfigNode 和 3 个 DataNode 集群的内部 IPv6 通信
> - SchemaRegion Ratis 和 DataRegion IoTConsensus 的 IPv6 通信
> - Pipe 通过 IPv6 传输数据
> - REST 和 MQTT 服务通过 IPv6 访问
>
> 欢迎大家提出意见和建议。
>
> Best regards,
> Haonan Hou
>

Reply via email to