Looked at the InfoServer in hbase.
Given the current status of the code, it seems to me that it is difficult to do so if InfoServer inherits HttpServer.
My suggestion is to adopt parts of the early patches in HADOOP-10232, that are:
- Use composition instead of inheritance.
- Expose appDir() in the builder.
- Expose getWebAppContext() in {HttpServer}} to customize the log directory.
It should work for the release aligned with 2.4, but just keep your heads up – there are no guarantees that this APIs will stay stable. HBase might be broken again whenever we move away from Jetty 6. I anticipate some security-related work (e.g. HDFS-5716) could potentially change the APIs as well. The work can start as early as 2.5, so you really need to evaluate the balance of riding along with HttpServer versus the difficulties on working with different Hadoop versions.
On the other hand, can you please elaborate on your concerns of HBASE-10336? It is a big patch indeed, but most of them are copying from the hadoop codebase directly thus the risk is minimal.
The patch added the listeners. With this patch. HBase TestInfoServer works fine now.