Andrew Denner created THRIFT-5232:
-------------------------------------

             Summary: .net Thrift nuget package TSocket(host,port) fails for 
all non local host connections
                 Key: THRIFT-5232
                 URL: https://issues.apache.org/jira/browse/THRIFT-5232
             Project: Thrift
          Issue Type: Bug
          Components: netstd - Library
    Affects Versions: 0.13.0
         Environment: Windows 10, .net 4.5.1 project on visual studio 2019 
version 6.3.5

.net framework 4.8.03761
            Reporter: Andrew Denner


Using the .net nuget package ApacheThrift version 0.13.0.1 to connect to a 
hbase thrift2 thrift server running on a seperate machine TSocket(host,port) 
will fail with the error: 

 
{noformat}
testhost.x86.exe Error: 0 : =============== Custom exception handling in 
HbasePortClient openAndGetScannerRowsCollection =============== 
testhost.x86.exe Error: 0 : Exception:  System.Net.Sockets.SocketException.
testhost.x86.exe Error: 0 : FailCount:  1.
testhost.x86.exe Error: 0 : Message:    A request to send or receive data was 
disallowed because the socket is not connected and (when sending on a datagram 
socket using a sendto call) no address was supplied
testhost.x86.exe Error: 0 : StackTrace:    at 
System.Net.Sockets.TcpClient.Connect(String hostname, Int32 port)
   at Thrift.Transport.TSocket.Open()
   at Thrift.Transport.TBufferedTransport.Open()
{noformat}
 

For the following code:
{code:java}
                    socket = new TSocket(host, port);
                    transport = new TFramedTransport(socket);
                    transport.open();
                    TCompactProtocol proto = new TCompactProtocol(transport);
                    m_LazyClient = new THBaseService.Client(proto);
{code}
We tried with and without the open() command on the socket, transport etc.

This however does work if you are connecting to localhost (via putty ssh port 
forwarding)

As a workaround, the following code does work:
{code:java}
                    TcpClient cli = new TcpClient(host, port);
                    socket = new TSocket(cli);
                    transport = new TFramedTransport(socket);
                    TCompactProtocol proto = new TCompactProtocol(transport);
                    m_LazyClient = new THBaseService.Client(proto);
{code}



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

Reply via email to