Currently when namenode is started for upgrade (hadoop namenode -upgrade command), after finishing upgrade of metadata, namenode starts working normally and wait for datanodes to upgrade itself and connect to to NN. We need to have option for upgrading only NN metadata, so after upgrade is finished on NN, process should terminate.
I have tested it by changing in file: hdfs.server.namenode.NameNode.java, method: public static NameNode createNameNode(String argv, Configuration conf):
in switch added
NameNode nameNode = new NameNode(conf);
This did upgrade of metadata, closed process after finished, and later when all services were started, upgrade of datanodes finished sucessfully and system run .
What I'm suggesting right now is to add new startup parameter "-force", so namenode can be started like this "hadoop namenode -upgrade -force", so we can indicate that we want to terminate process after upgrade metadata on NN is finished. Old functionality should be preserved, so users can run "hadoop namenode -upgrade" on same way and with same behaviour as it was previous.