[
https://issues.apache.org/jira/browse/THRIFT-5214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17114411#comment-17114411
]
Yuxuan Wang commented on THRIFT-5214:
-------------------------------------
I implemented it in https://github.com/apache/thrift/pull/2153 and am currently
running that version in our staging environment. Feature wise it looks fine,
but I do see both increased latency and slightly increased error rate. I'll
leave it running for the weekend, and if that doesn't improve I'll abandon this
approach.
> 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
> Time Spent: 10m
> Remaining Estimate: 0h
>
> 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)