thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Duru Can Celasun (Jira)" <j...@apache.org>
Subject [jira] [Commented] (THRIFT-5214) go: Implement connection check in TSocket
Date Fri, 22 May 2020 07:49:00 GMT

    [ https://issues.apache.org/jira/browse/THRIFT-5214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17113828#comment-17113828
] 

Duru Can Celasun commented on THRIFT-5214:
------------------------------------------

1. Github's fix for that issue was also non-windows only, but I'm not sure why. Windows sockets
seem to have EWOULDBLOCK (as [WSAEWOULDBLOCK|https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2])
as well but I'm not really familiar with Windows so I can't be sure. In any case, a non-windows
build tag is fine.
2. [Officially|https://github.com/apache/thrift/blob/v0.13.0/LANGUAGES.md] we support 1.10.8+
so that should be fine.

> go: Implement connection check in TSocket
> -----------------------------------------
>
>                 Key: THRIFT-5214
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5214
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Go - Library
>            Reporter: Yuxuan Wang
>            Priority: Major
>
> The first issue described in [this GitHub engineering blog article|https://github.blog/2020-05-20-three-bugs-in-the-go-mysql-driver/]
is also an issue when we use thrift client pools. We implemented a thrift client pool by checking
client's TTransport.IsOpen before using that client, and also added (arbitrary) TTL to the
clients to avoid using clients that's been opened for too long, but we still occasionally
get broken pipes and unexpected EOF errors when using those clients. I think implementing
the same connection check described by that article in TSocket.IsOpen (and/or when try to
read 0 byte from TSocket.Read) would greatly help the situation.
> But there are a few limitations of the connection check implementation, and I'm not sure
how acceptable are they in the thrift library:
> 1. It only works on non-windows systems (so for windows we'll have to fallback to the
old IsOpen implementation, I guess?)
> 2. It requires go 1.9+, what's thrift library's minimal go version supported?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message