apache / bookkeeper

Apache BookKeeper - a scalable, fault tolerant and low latency storage service optimized for append-only workloads
https://bookkeeper.apache.org/
Apache License 2.0
1.91k stars 904 forks source link

Can not recognize ipv6 ip when init zk #3287

Open tal705 opened 2 years ago

tal705 commented 2 years ago

BUG REPORT

Describe the bug when I use pulsar script and run initialize-cluster-metadata, logs show an error that ipv6 ip is Invalid hostname.

logs (I use x to replace some character):

2022-04-21T17:55:33,814+0800 [main-EventThread] INFO  org.apache.zookeeper.ClientCnxn - EventThread shut down for session: 0x300197585c701d9
Exception in thread "main" java.lang.IllegalArgumentException: Invalid hostname : [2409:xxxx:xxxx::1:xxxx:0919]:2181
        at org.apache.bookkeeper.common.net.ServiceURI.validateHostName(ServiceURI.java:220)
        at org.apache.bookkeeper.common.net.ServiceURI.lambda$create$0(ServiceURI.java:201)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
        at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
        at org.apache.bookkeeper.common.net.ServiceURI.create(ServiceURI.java:202)
        at org.apache.bookkeeper.common.net.ServiceURI.create(ServiceURI.java:151)
        at org.apache.pulsar.PulsarClusterMetadataSetup.main(PulsarClusterMetadataSetup.java:225)

To Reproduce Pulsar Version:2.9.2 (it use bookkeeper 4.14.4) Zk can be connected. Use Pulsar script bin/pulsar, then run command:

bin/pulsar initialize-cluster-metadata \
  --cluster pulsar2921 \
  --zookeeper [2409:xxxx:xxxx::1:xxxx:0919]:2181/pulsar/pulsar2921 \
  --configuration-store [2409:xxxx:xxxx::1:xxxx:0919]:2181/pulsar/pulsar2921 \
  --web-service-url http://brokerpulsar:8080/ \
  --broker-service-url pulsar://brokerpulsar:6650/ 

Expected behavior Solve this problem.

boatrainlsz commented 2 years ago

FYI:#1513

MarvinCai commented 2 years ago

bin/pulsar initialize-cluster-metadata looks like the command to initialize cluster metadata for Pulsar cluster. As in bin/pulsar script ipv6 support is explicitly disabled: https://github.com/apache/pulsar/blob/3f109d6cb7f128a5f8331e33477fd69c3c26d531/bin/pulsar#L275 But we can override it by using env var export PULSAR_EXTRA_OPTS=-Djava.net.preferIPv4Stack=false Also if you were having trouble with bk metadata init we can useexport BOOKIE_EXTRA_OPTS=-Djava.net.preferIPv4Stack=false