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.


---

Reply via email to