[
https://issues.apache.org/jira/browse/THRIFT-3877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16275428#comment-16275428
]
Chet Murthy commented on THRIFT-3877:
-------------------------------------
Unsurprisingly the cpp-go (cpp server, go client) HTTP tests all fail also.
B/c it's the converse problem:
the C++ server doesn't send a response for the onway method
but the Golang HTTP stack expects that response.
So it hangs. Again, looking at the Golang http client, we can see that deeply
baked-into the idea of the client, is a "RoundTripper", which is the
"transport". It is effectively a function,
RoundTrip(*Request) (*Response, error)
And guess what? a Reponse is a struct that starts ...
```
type Response struct {
Status string // e.g. "200 OK"
StatusCode int // e.g. 200
Proto string // e.g. "HTTP/1.0"
ProtoMajor int // e.g. 1
ProtoMinor int // e.g. 0
```
Baked deeply into this code, is the assumption that all requests receive
responses, and if they do not, then it's an error.
But even *worse*, it does not appear that the Go http client is written to
support pipelineing. At. All.
My suggestion: either write or find an OSS HTTP client that supports
pipelineing properly. That, combined with the Golang HTTP server behaviour,
would yield the client-visible behaviour of "oneway".
I'll continue investigating other language-combinations that fail; let's see if
they have similar issues.
> C++: library don't work with HTTP (csharp server, cpp client; need cross test
> enhancement)
> ------------------------------------------------------------------------------------------
>
> Key: THRIFT-3877
> URL: https://issues.apache.org/jira/browse/THRIFT-3877
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Affects Versions: 0.9.3, 0.10.0
> Environment: Windows 7, Visual Studio 2013 (C#), Qt 5.7 (MSVC 12).
> Thrift from git repo, SHA-1: 5a3f855b4e6882184f13c698855c877241144a12 (master)
> Reporter: Sergey Fasman
> Assignee: James E. King, III
> Priority: Critical
>
> Client on C++.
> Tested on C# HTTP server and client — work ideal.
> Then create client on C++. Client after request starts infinitly wait for
> data.
> For example, JSON protocol read data symbol by symbol, when trying read: it
> always try to call recv function (even all data already received).
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)