sofastack / sofa-bolt

SOFABolt is a lightweight, easy to use and high performance remoting framework based on Netty.
https://www.sofastack.tech/projects/sofa-bolt/
Apache License 2.0
2.4k stars 856 forks source link

IPv6 Support ? #263

Closed NanerLee closed 1 year ago

NanerLee commented 2 years ago

Your question

当前 Bolt 支持 IPV6 地址吗?

我们生产用的 JRaft, 在 IPV6 环境中测试时, 在 Raft 之间进行 RPC 通信时报错, 看报错信息是无法解析 IPV6 形式的 address, 涉 及的 Class 是 RpcAddressParser, 举个例子: [fdbd:dc02:ff:1:9::1b]:6663

除了这个已知问题外, 不知道其他方面 Bolt 支持 IPV6 吗?

NanerLee commented 2 years ago

补一个报错信息

2021-09-15 17:07:05.149 INFO  [JRaft-ElectionTimer-<ipv6_only/[fdbd:dc02:ff:1:9::1b]:6663>0] com.alipay.sofa.jraft.core.NodeImpl - Node <ipv6_only/[fdbd:dc02:ff:1:9::1b]:6663> term 1 start preVote.
2021-09-15 17:07:05.153 ERROR [JRaft-ElectionTimer-<ipv6_only/[fdbd:dc02:ff:1:9::1b]:6663>0] c.a.sofa.jraft.util.RepeatedTimer - Run timer failed.
java.lang.NumberFormatException: For input string: "dc02:ff:1:9::1b]:6661"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at com.alipay.remoting.rpc.RpcAddressParser.parse(RpcAddressParser.java:150)
    at com.alipay.remoting.rpc.RpcClient.checkConnection(RpcClient.java:441)
    at com.alipay.remoting.rpc.RpcClient.checkConnection(RpcClient.java:435)
    at com.alipay.remoting.rpc.RpcClient.checkConnection(RpcClient.java:430)
    at com.alipay.sofa.jraft.rpc.impl.BoltRpcClient.checkConnection(BoltRpcClient.java:71)
    at com.alipay.sofa.jraft.rpc.impl.AbstractClientService.isConnected(AbstractClientService.java:81)
    at com.alipay.sofa.jraft.rpc.impl.AbstractClientService.connect(AbstractClientService.java:143)
    at com.alipay.sofa.jraft.core.NodeImpl.preVote(NodeImpl.java:2654)
    at com.alipay.sofa.jraft.core.NodeImpl.handleElectionTimeout(NodeImpl.java:629)
    at com.alipay.sofa.jraft.core.NodeImpl.access$1300(NodeImpl.java:138)
    at com.alipay.sofa.jraft.core.NodeImpl$2.onTrigger(NodeImpl.java:928)
    at com.alipay.sofa.jraft.util.RepeatedTimer.run(RepeatedTimer.java:86)
    at com.alipay.sofa.jraft.util.RepeatedTimer.lambda$schedule$0(RepeatedTimer.java:182)
    at com.alipay.sofa.jraft.util.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:609)
    at com.alipay.sofa.jraft.util.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:677)
    at com.alipay.sofa.jraft.util.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:395)
    at java.lang.Thread.run(Thread.java:748)
seeflood commented 2 years ago

这感觉很有价值啊 @xmtsui @dbl-x @JervyShi 咱们有计划支持么?或者暂时没时间搞的话能否发个社区任务

seeflood commented 2 years ago

@NanerLee 您感兴趣来实现下这个功能么~

chuailiwu commented 2 years ago

补一个报错信息

2021-09-15 17:07:05.149 INFO  [JRaft-ElectionTimer-<ipv6_only/[fdbd:dc02:ff:1:9::1b]:6663>0] com.alipay.sofa.jraft.core.NodeImpl - Node <ipv6_only/[fdbd:dc02:ff:1:9::1b]:6663> term 1 start preVote.
2021-09-15 17:07:05.153 ERROR [JRaft-ElectionTimer-<ipv6_only/[fdbd:dc02:ff:1:9::1b]:6663>0] c.a.sofa.jraft.util.RepeatedTimer - Run timer failed.
java.lang.NumberFormatException: For input string: "dc02:ff:1:9::1b]:6661"
  at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
  at java.lang.Integer.parseInt(Integer.java:580)
  at java.lang.Integer.parseInt(Integer.java:615)
  at com.alipay.remoting.rpc.RpcAddressParser.parse(RpcAddressParser.java:150)
  at com.alipay.remoting.rpc.RpcClient.checkConnection(RpcClient.java:441)
  at com.alipay.remoting.rpc.RpcClient.checkConnection(RpcClient.java:435)
  at com.alipay.remoting.rpc.RpcClient.checkConnection(RpcClient.java:430)
  at com.alipay.sofa.jraft.rpc.impl.BoltRpcClient.checkConnection(BoltRpcClient.java:71)
  at com.alipay.sofa.jraft.rpc.impl.AbstractClientService.isConnected(AbstractClientService.java:81)
  at com.alipay.sofa.jraft.rpc.impl.AbstractClientService.connect(AbstractClientService.java:143)
  at com.alipay.sofa.jraft.core.NodeImpl.preVote(NodeImpl.java:2654)
  at com.alipay.sofa.jraft.core.NodeImpl.handleElectionTimeout(NodeImpl.java:629)
  at com.alipay.sofa.jraft.core.NodeImpl.access$1300(NodeImpl.java:138)
  at com.alipay.sofa.jraft.core.NodeImpl$2.onTrigger(NodeImpl.java:928)
  at com.alipay.sofa.jraft.util.RepeatedTimer.run(RepeatedTimer.java:86)
  at com.alipay.sofa.jraft.util.RepeatedTimer.lambda$schedule$0(RepeatedTimer.java:182)
  at com.alipay.sofa.jraft.util.timer.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:609)
  at com.alipay.sofa.jraft.util.timer.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:677)
  at com.alipay.sofa.jraft.util.timer.HashedWheelTimer$Worker.run(HashedWheelTimer.java:395)
  at java.lang.Thread.run(Thread.java:748)

这个问题我这边已经fix,并且本地用sofarpc 验证ipv6可以跑通,后面发版周知下你

willardwang commented 2 years ago

ipv6已发版:https://mvnrepository.com/artifact/com.alipay.sofa/bolt/1.6.5

willardwang commented 1 year ago

ipv6已发版:https://mvnrepository.com/artifact/com.alipay.sofa/bolt/1.6.5

这个mvn中的1.6.5包不对,不包含ipv6,用源码自己打个包吧,有点坑。。

OrezzerO commented 1 year ago

There is no release note for 1.6.5 at https://github.com/sofastack/sofa-bolt/releases @chuailiwu @EvenLjj

chuailiwu commented 1 year ago

预计这个月会出一个最新版本包括这部分内容

chuailiwu commented 1 year ago

已经出 1.6.6 版本支持ivp6