Details
-
Sub-task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
RpcConnection is always templated on asio::ip::tcp::socket except for in rpc_engine_test.cc. My understanding is the original reason for using this as a template parameter was to be able to use trait injection in gmock tests.
This is useful for testing but makes debugging a lot more tricky due to the extra stuff that shows up on the stack. Heavily templated code also tends to produce very unhelpful compile errors e.g. when a missing semicolon in a templated class turns into pages of errors coming out of stuff that depended on the instantiation.
This sort of work was already accomplished elsewhere by HDFS-9144, it looks like RpcConnection was one of the few areas they were left in place.