Impala relies on Thrift 0.9.X for its RPC implementation. This is a venerable release and is showing its age. Problems include:
- Low-quality SASL support (that we implemented ourselves)
- Lack of high-quality nonblocking server (TNonBlockingServer is ok, but doesn't work with SASL, making it a non-starter for us. It is also very hard to provide support for sessions with TNonBlockingServer).
- Lack of 0-copy native bytes type, meaning that large data structures are inefficient to send
- Lack of support for async. server implementation, so expensive RPCs can consume threads that could have been used by cheap ones.