[
https://issues.apache.org/jira/browse/THRIFT-5809?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18115803#comment-18115803
]
Sylwester Lachiewicz commented on THRIFT-5809:
----------------------------------------------
Re-ran the cross-test matrix with all 77 Go entries removed from
[test/known_failures_Linux.json|https://github.com/apache/thrift/blob/master/test/known_failures_Linux.json]
on a fork branch
([diff|https://github.com/apache/thrift/compare/master...slachiewicz:thrift:cross-test-go-known-failures],
[run
35029754387|https://github.com/slachiewicz/thrift/actions/runs/35029754387]).
The file keys are server-client, so {{nodejs-go}} is a Node.js server with a Go
client. 36 of the 77 entries are in the CI matrix; the other 41 involve netstd,
d, dart and cl, which the matrix does not build, so they stay unverified. All
36 still fail, for these reasons:
* *18 py-go over ip-ssl (buffered, framed, zlib)*: the Go test client presents
no client certificate, its TLS config at
[client.go:46|https://github.com/apache/thrift/blob/master/test/go/src/common/client.go#L46]
has no {{Certificates}}, while the Python server requires one at
[TestServer.py:390|https://github.com/apache/thrift/blob/master/test/py/TestServer.py#L390].
The Go side fails with {{remote error: tls: certificate required}}. The
http-ip-ssl rows pass because the Python HTTP server does not ask for one.
Test-only fix: load client_v3.crt and client_v3.key in the Go test client as
the C++ client does.
* *8 nodejs-go over http*: the Node.js test server registers the service only
at {{/test}}
([server.mjs:85|https://github.com/apache/thrift/blob/master/lib/nodejs/test/server.mjs#L85])
and answers {{403 No Apache Thrift Service at /}}. The Go client posts to
{{/}}. This is what THRIFT-5808 reports. The same wall excludes every other
http client against the Node.js server: 12 cpp, 18 py, 6 java, 6 d, 4 php, 4
hs, 3 dart, 3 lua and 1 js rows. Registering the service at {{/}} as well would
let all of them be retested.
* *6 go-java over http*: the three http-ip-ssl rows fail because the Java test
client refuses SSL over http by design
([TestClient.java:150|https://github.com/apache/thrift/blob/master/lib/java/src/crossTest/java/org/apache/thrift/test/TestClient.java#L150]).
The three http-ip rows run the whole suite and fail only testOneway: the Go
HTTP handler
([http_transport.go:30|https://github.com/apache/thrift/blob/master/lib/go/thrift/http_transport.go#L30])
writes the response after {{Process}} returns, so a oneway call blocks the
client for the handler's 3 s sleep, which the Java client counts as a failure.
* *2 go-py over zlib-ip-ssl*: the Python client hangs after testString with the
long Unicode string and times out after 19 passing tests; zlib-ip without SSL
passes. Not diagnosed.
* *2 go-cpp header over http*: the C++ client aborts with
{{TTransportException: Bad Status: 0}} on testDouble(1e-292). go-cpp binary,
compact and json over http pass, and header over http is excluded for most
other pairs as well, so this looks like the C++ client.
The py-go and nodejs-go blocks, 26 rows, have test-harness fixes and would be
worth one ticket each under THRIFT-4502. Related: THRIFT-5808, THRIFT-3882,
THRIFT-6233.
_This comment was created with AI assistance._
> Under header_http-ip-ssl protocol, Go will prompt TLS handshake error
> ---------------------------------------------------------------------
>
> Key: THRIFT-5809
> URL: https://issues.apache.org/jira/browse/THRIFT-5809
> Project: Thrift
> Issue Type: Bug
> Components: Go - Library
> Reporter: Team_RPCtester
> Priority: Major
>
> Hi,
> We find that when using Node.js as the client and Go as the server, there is
> an error on the server side: http: TLS handshake error from 127.0.0.1:42648:
> EOF. This occurs under the header_http-ip-ssl protocol. Despite the error,
> the server is still able to transmit the value. While other protocols do not
> prompt this error.
> The test case is as follows:
>
> {code:java}
> namespace go commonResource
> service DataService {
> i8 Method_0(1: i8 agr_method_0)
> }
> {code}
>
> Thank you
--
This message was sent by Atlassian Jira
(v8.20.10#820010)