Thanks Mingliang Liu and Allen Wittenauer for the comments and sorry for my delayed response.
The if (secondary != null) is confusing, and should be removed with the change of
HDFS-6348. My bad I didn't catch this redundancy when fixing HDFS-3059.
The reason of disabling the http server when starting with CommandLineOpts is that, after processing it the 2NN will terminate. E.g. when someone runs hdfs secondarynamenode -checkpoint the 2nn just start and checkpoint, then exit. Starting an http server during this is unnecessary - the 2nn webui is for the daemon anyways. Also, when security is enabled, admin may not have the credentials to the web server, but they should be allowed to do checkpointing.
My comments in the code seems to be doing more confusion than explanation...... I revised it and attached in patch 1 for review.
re. Allen Wittenauer's questions:
If the secondary namenode isn't actually configured but someone tries to start the 2nn, what happens?
In this case 2NN is started as a daemon. My comments were bad.
Also, does Checkpoint and Backup have different entry points or is this used for those too?
AFAICT, 2NN only supports -checkpoint, -format and -geteditsize, with the same entry point. Backup should be done from the NN.