Currently, there is no timeout with the various HDFS calls (e.g. hdfsOpen(), hdfsRead()) we made in libhdfs.so in either the disk-io-mgr thread or scanner thread context. Various users of Impala have complaint in the past about hung queries which eventually boiled down to stuck hdfs calls. HDFS maintainers have been slow to find the root cause of those hangs. To make this kind of stuck queries problem easier to identify in the future, we should just enforce a timeout in various hdfs calls so the queries will fail when certain HDFS calls take longer than a designated timeout period.
There may be multiple layers which this timeout can be enforced:
- at Impala level, we can have a fixed sized thread pool which handles all hdfs calls. The existing hdfs calls will be a wrapper with a timeout.
- at libhdfs.so, enforce a timeout at places in the HDFS client code which may block forever.
The second option is probably beyond the charter of Apache Impala project.