[ 
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)

Reply via email to