[
https://issues.apache.org/jira/browse/THRIFT-5161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17474602#comment-17474602
]
Mario Emmenlauer commented on THRIFT-5161:
------------------------------------------
No, I never managed to fully understand this problem. In my case the whole
software setup was relatively complex, which hindered successful debugging.
If you want to continue on this, it may be interesting if you start with the
testserver and testclient from the repository. It should be fairly easy to get
those running, and you could extend them to a more complete stresstest.
> Can not combine C++ server with netstd client for binary protocol
> -----------------------------------------------------------------
>
> Key: THRIFT-5161
> URL: https://issues.apache.org/jira/browse/THRIFT-5161
> Project: Thrift
> Issue Type: Improvement
> Components: netstd - Library
> Affects Versions: 0.13.0
> Reporter: Mario Emmenlauer
> Priority: Major
>
> I fail to use a netstd client on a C++ server with the binary protocol, plain
> socket (no ssl). The connection is established successfully, and I can call a
> first method, but then the connection breaks.
> In more detail, this is what I get:
> For a one-way method, I can call send twice, and I receive a successful send
> on the client side, but nothing is received on the server. When attempting a
> third send, I get client exception
> {code}
> ThriftClient::test01(): System.IO.IOException: Unable to read data from the
> transport connection: An established connection was aborted by the software
> in your host machine..
> ---> System.Net.Sockets.SocketException (10053): An established connection
> was aborted by the software in your host machine.
> --- End of inner exception stack trace ---
> at Thrift.Transport.Client.TStreamTransport.WriteAsync(Byte[] buffer, Int32
> offset, Int32 length, CancellationToken cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Transport\Client\TStreamTransport.cs:line 96
> at Thrift.Transport.TBufferedTransport.FlushAsync(CancellationToken
> cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Transport\Layered\TBufferedTransport.cs:line 168
> at InternalCppAPI.InternalCppAPI.Client.test01Async(CancellationToken
> cancellationToken) in
> C:\BDAImAcquireWPFGui\CppNetBinding\src\gen-netstd\InternalCppAPI\InternalCppAPI.cs:line
> 92
> at InternalCppAPI.ThriftClient.test01(CancellationToken cancellationToken)
> in C:\BDAImAcquireWPFGui\CppNetBinding\src\ThriftClient.cs:line 129
> {code}
> For a two-way method, I can call send successfully once, and the method gets
> the correct server response. On the second attempt, I get client exception
> {code}
> ThriftClient::ping(): System.IO.IOException: Unable to read data from the
> transport connection: An established connection was aborted by the software
> in your host machine..
> ---> System.Net.Sockets.SocketException (10053): An established connection
> was aborted by the software in your host machine.
> --- End of inner exception stack trace ---
> at Thrift.Transport.Client.TStreamTransport.ReadAsync(Byte[] buffer, Int32
> offset, Int32 length, CancellationToken cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Transport\Client\TStreamTransport.cs:line 85
> at Thrift.Transport.TBufferedTransport.ReadAsync(Byte[] buffer, Int32
> offset, Int32 length, CancellationToken cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Transport\Layered\TBufferedTransport.cs:line 115
> at Thrift.Transport.TTransport.ReadAllAsync(Byte[] buffer, Int32 offset,
> Int32 length, CancellationToken cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Transport\TTransport.cs:line 149
> at Thrift.Protocol.TBinaryProtocol.ReadI32Async(CancellationToken
> cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Protocol\TBinaryProtocol.cs:line 473
> at Thrift.Protocol.TBinaryProtocol.ReadMessageBeginAsync(CancellationToken
> cancellationToken) in
> C:\thrift\lib\netstd\Thrift\Protocol\TBinaryProtocol.cs:line 279
> at InternalCppAPI.InternalCppAPI.Client.pingAsync(Int32 aTestValue,
> CancellationToken cancellationToken) in
> C:\BDAImAcquireWPFGui\CppNetBinding\src\gen-netstd\InternalCppAPI\InternalCppAPI.cs:line
> 62
> at InternalCppAPI.ThriftClient.ping(Int32 aTestValue, CancellationToken
> cancellationToken) in
> C:\BDAImAcquireWPFGui\CppNetBinding\src\ThriftClient.cs:line 110
> {code}
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)