Currently, if a client connects to a DN and begins to read a block, but then stops calling read() for a long period of time, the DN will log a SocketTimeoutException "480000 millis timeout while waiting for channel to be ready for write." This is because there is no "keepalive" functionality of any kind. At a minimum, we should improve this error message to be an INFO level log which just says that the client likely stopped reading, so disconnecting it.