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.
---