Github user benweint commented on the issue: https://github.com/apache/thrift/pull/1352 Ok, I've finally figured out how to reproduce that test failure locally on macOS. For posterity, here's what I did: ``` PATH="/usr/local/opt/bison/bin:$PATH" ./configure --with-openssl=/usr/local/opt/openssl --with-boost=/usr/local --without-lua --without-csharp --without-c_glib --without-erlang --without-php --without-cpp --without-haskell make -j3 precross test/test.py --server rb --client nodejs ``` After doing that, the tests that use a `BufferedTransport` on the Ruby server side fail. Since I'm only dealing with Ruby on the client side in my usage, I didn't realize that `BufferedTransport` can be used to wrap a server socket as well (this is what the Ruby `TestServer.rb` is doing when testing a buffered transport). The issue stems from my misunderstanding of the semantics of `#flush`. In the nodejs -> Ruby cross test, I think the node client writes multiple requests to the socket before the Ruby server responds to any of them. The Ruby server calls `#flush` after each response to flush the write buffer, but my change drops the read buffer as well, discarding the buffered requests before they've been processed. I'm going to close this and think about whether there's a better way to accomplish what I'm after.
---