Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-5214

go: Implement connection check in TSocket

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.14.0
    • Component/s: Go - Library
    • Labels:
      None

      Description

      The first issue described in this GitHub engineering blog article 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?

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              fishywang Yuxuan Wang
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 3h 50m
                3h 50m