/// <summary>Startup: start ZK.</summary> /// <remarks> /// Startup: start ZK. It is only after this that /// the binding information is valid. /// </remarks> /// <exception cref="System.Exception"/> protected override void ServiceStart() { SetupSecurity(); ZooKeeperServer zkServer = new ZooKeeperServer(); FileTxnSnapLog ftxn = new FileTxnSnapLog(dataDir, dataDir); zkServer.SetTxnLogFactory(ftxn); zkServer.SetTickTime(tickTime); Log.Info("Starting Local Zookeeper service"); factory = ServerCnxnFactory.CreateFactory(); factory.Configure(GetAddress(port), -1); factory.Startup(zkServer); string connectString = GetConnectionString(); Log.Info("In memory ZK started at {}\n", connectString); if (Log.IsDebugEnabled()) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); zkServer.DumpConf(pw); pw.Flush(); Log.Debug(sw.ToString()); } binding = new BindingInformation(); binding.ensembleProvider = new FixedEnsembleProvider(connectString); binding.description = GetName() + " reachable at \"" + connectString + "\""; AddDiagnostics(binding.description); // finally: set the binding information in the config GetConfig().Set(KeyRegistryZkQuorum, connectString); }
/// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> internal static ServerCnxnFactory CreateNewServerInstance(FilePath dataDir, ServerCnxnFactory factory, string hostPort, int maxCnxns) { ZooKeeperServer zks = new ZooKeeperServer(dataDir, dataDir, 3000); int Port = GetPort(hostPort); if (factory == null) { factory = ServerCnxnFactory.CreateFactory(Port, maxCnxns); } factory.Startup(zks); Assert.True("waiting for server up", ClientBaseWithFixes.WaitForServerUp ("127.0.0.1:" + Port, ConnectionTimeout)); return(factory); }