You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "David Li (Jira)" <ji...@apache.org> on 2020/11/03 23:39:00 UTC

[jira] [Commented] (ARROW-10475) [С++] Arrow Flight Server / Client cannot be initialized with Ipv6 host

    [ https://issues.apache.org/jira/browse/ARROW-10475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17225729#comment-17225729 ] 

David Li commented on ARROW-10475:
----------------------------------

Thanks for the report. It looks like uriparser (the library we use to handle URIs) removes brackets for IPv6 hosts, so we can add them back when we see an IPv6 address.

> [С++] Arrow Flight Server / Client cannot be initialized with Ipv6 host
> -----------------------------------------------------------------------
>
>                 Key: ARROW-10475
>                 URL: https://issues.apache.org/jira/browse/ARROW-10475
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++, FlightRPC
>            Reporter: Zosimova Zhanna
>            Priority: Major
>             Fix For: 3.0.0
>
>
> We want to support Arrow Flight compatibility protocol in ClickHouse ([https://github.com/ClickHouse/ClickHouse]). Our code needs Ipv6 support.
> In our code I wrote:
> {code:java}
> std::string host = "[::]";
> int port = 9993;
> arrow::flight::Location location;
> auto status = arrow::flight::Location::ForGrpcTcp(host, port, &location);
> std::cerr << "Status=" << status.ToString() << std::endl;
> std::cerr << "Location=" << location.ToString() << std::endl; {code}
> The output seems to be ok:
> {code:java}
> Status=OK
> Location=grpc+tcp://[::]:9993{code}
> After that I initialized FlightServerBase using method Init(options).
> In flight library I wrote next 3 lines before [code|#L825]
> {code:java}
> std::cerr << "Location=" << location.ToString() << std::endl;
> std::cerr << "Host=" << location.uri_->host() << ", Port=" << location.uri_->port_text() << std::endl;
> std::cerr << "Host:Port=" << location.uri_->host() << ":" << location.uri_->port_text() << std::endl;{code}
>  
> The output is:
> {code:java}
> Location=grpc+tcp://[::]:9993
> Host=::, Port=9993
> Host:Port=:::9993
> E1103 03:18:01.978794160 612780 server_chttp2.cc:40]
> {"created":"@1604362681.978626229","description":"Name or service not known","errno":-2,"file":"../contrib/grpc/src/core/lib/iomgr/resolve_address_posix.cc","file_line":108,"os_error":"Name or service not known","syscall":"getaddrinfo","target_address":":::9993"}{code}
> Location returns host without square brackets that must be used in addresses with port. The problem is here:
> {code:java}
> std::stringstream address;
> address << location.uri_->host() << ':' << location.uri_->port_text();{code}
> The same issue is also observed in the client [code|#L845]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)