/// <exception cref="System.IO.IOException"/>
 private MiniJournalCluster(MiniJournalCluster.Builder b)
 {
     Log.Info("Starting MiniJournalCluster with " + b.numJournalNodes + " journal nodes"
              );
     if (b.baseDir != null)
     {
         this.baseDir = new FilePath(b.baseDir);
     }
     else
     {
         this.baseDir = new FilePath(MiniDFSCluster.GetBaseDirectory());
     }
     nodes = new MiniJournalCluster.JNInfo[b.numJournalNodes];
     for (int i = 0; i < b.numJournalNodes; i++)
     {
         if (b.format)
         {
             FilePath dir = GetStorageDir(i);
             Log.Debug("Fully deleting JN directory " + dir);
             FileUtil.FullyDelete(dir);
         }
         JournalNode jn = new JournalNode();
         jn.SetConf(CreateConfForNode(b, i));
         jn.Start();
         nodes[i] = new MiniJournalCluster.JNInfo(jn);
     }
 }
        /// <exception cref="System.Exception"/>
        /// <exception cref="System.IO.IOException"/>
        public virtual void RestartJournalNode(int i)
        {
            MiniJournalCluster.JNInfo info = nodes[i];
            JournalNode   jn   = info.node;
            Configuration conf = new Configuration(jn.GetConf());

            if (jn.IsStarted())
            {
                jn.StopAndJoin(0);
            }
            conf.Set(DFSConfigKeys.DfsJournalnodeRpcAddressKey, NetUtils.GetHostPortString(info
                                                                                           .ipcAddr));
            string uri = info.httpServerURI;

            if (uri.StartsWith("http://"))
            {
                conf.Set(DFSConfigKeys.DfsJournalnodeHttpAddressKey, Sharpen.Runtime.Substring(uri
                                                                                               , ("http://".Length)));
            }
            else
            {
                if (info.httpServerURI.StartsWith("https://"))
                {
                    conf.Set(DFSConfigKeys.DfsJournalnodeHttpsAddressKey, Sharpen.Runtime.Substring(uri
                                                                                                    , ("https://".Length)));
                }
            }
            JournalNode newJN = new JournalNode();

            newJN.SetConf(conf);
            newJN.Start();
            info.node = newJN;
        }