You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@thrift.apache.org by "Sylwester Lachiewicz (Jira)" <ji...@apache.org> on 2026/09/15 22:32:00 UTC
[jira] [Commented] (THRIFT-5809) Under header_http-ip-ssl protocol, Go will prompt TLS handshake error
[ 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)