code: public static ClientProtocol createNamenode(Configuration conf) throws IOException {
      return createNamenode(NameNode.getClientProtocolAddress(conf), conf);
    }
docs: The locking hierarchy is to first acquire lock on DFSClient object, followed by
  lock on leasechecker, followed by lock on an individual DFSOutputStream.