protected override void Create(SingleNodeOptions options) { var dbPath = Path.GetFullPath(ResolveDbPath(options.DbPath, options.HttpPort)); _dbLock = new ExclusiveDbLock(dbPath); if (!_dbLock.Acquire()) { throw new Exception(string.Format("Couldn't acquire exclusive lock on DB at '{0}'.", dbPath)); } var db = new TFChunkDb(CreateDbConfig(dbPath, options.CachedChunks, options.ChunksCacheSize)); var vnodeSettings = GetVNodeSettings(options); var dbVerifyHashes = !options.SkipDbVerify; var runProjections = options.RunProjections; Log.Info("\n{0,-25} {1}\n{2,-25} {3} (0x{3:X})\n{4,-25} {5} (0x{5:X})\n{6,-25} {7} (0x{7:X})\n{8,-25} {9} (0x{9:X})\n", "DATABASE:", db.Config.Path, "WRITER CHECKPOINT:", db.Config.WriterCheckpoint.Read(), "CHASER CHECKPOINT:", db.Config.ChaserCheckpoint.Read(), "EPOCH CHECKPOINT:", db.Config.EpochCheckpoint.Read(), "TRUNCATE CHECKPOINT:", db.Config.TruncateCheckpoint.Read()); var enabledNodeSubsystems = runProjections >= RunProjections.System ? new[] { NodeSubsystems.Projections } : new NodeSubsystems[0]; _projections = new Projections.Core.ProjectionsSubsystem(options.ProjectionThreads, runProjections); _node = new SingleVNode(db, vnodeSettings, dbVerifyHashes, ESConsts.MemTableEntryCount, _projections); RegisterWebControllers(enabledNodeSubsystems); RegisterUIProjections(); }
private MediumNode(string pathname, ProjectionsSubsystem projectionsSubsystem, bool runProjections) : base(pathname, subsystems: new []{projectionsSubsystem}) { _projections = projectionsSubsystem; RegisterWebControllers(new[] {NodeSubsystems.Projections} ); RegisterUIProjections(); }
private MediumNode(string pathname, ProjectionsSubsystem projectionsSubsystem, bool runProjections) : base(pathname, subsystems: new [] { projectionsSubsystem }) { _projections = projectionsSubsystem; RegisterWebControllers(new[] { NodeSubsystems.Projections }); RegisterUIProjections(); }
protected override void Create(ClusterNodeOptions opts) { var dbPath = Path.GetFullPath(ResolveDbPath(opts.DbPath, opts.ExternalHttpPort)); if (!opts.InMemDb) { _dbLock = new ExclusiveDbLock(dbPath); if (!_dbLock.Acquire()) { throw new Exception(string.Format("Couldn't acquire exclusive lock on DB at '{0}'.", dbPath)); } } _clusterNodeMutex = new ClusterNodeMutex(); if (!_clusterNodeMutex.Acquire()) { throw new Exception(string.Format("Couldn't acquire exclusive Cluster Node mutex '{0}'.", _clusterNodeMutex.MutexName)); } var dbConfig = CreateDbConfig(dbPath, opts.CachedChunks, opts.ChunksCacheSize, opts.InMemDb); FileStreamExtensions.ConfigureFlush(disableFlushToDisk: opts.UnsafeDisableFlushToDisk); var db = new TFChunkDb(dbConfig); var vNodeSettings = GetClusterVNodeSettings(opts); IGossipSeedSource gossipSeedSource; if (opts.DiscoverViaDns) { gossipSeedSource = new DnsGossipSeedSource(opts.ClusterDns, opts.ClusterGossipPort); } else { if (opts.GossipSeeds.Length == 0) { if (opts.ClusterSize > 1) { Log.Error(string.Format("DNS discovery is disabled, but no gossip seed endpoints have been specified. " + "Specify gossip seeds using the --{0} command line option.", Opts.GossipSeedCmd)); } else { Log.Info(string.Format("DNS discovery is disabled, but no gossip seed endpoints have been specified. Since" + "the cluster size is set to 1, this may be intentional. Gossip seeds can be specified" + "seeds using the --{0} command line option.", Opts.GossipSeedCmd)); } } gossipSeedSource = new KnownEndpointGossipSeedSource(opts.GossipSeeds); } var dbVerifyHashes = !opts.SkipDbVerify; var runProjections = opts.RunProjections; Log.Info("\n{0,-25} {1}\n" + "{2,-25} {3}\n" + "{4,-25} {5} (0x{5:X})\n" + "{6,-25} {7} (0x{7:X})\n" + "{8,-25} {9} (0x{9:X})\n" + "{10,-25} {11} (0x{11:X})\n", "INSTANCE ID:", vNodeSettings.NodeInfo.InstanceId, "DATABASE:", db.Config.Path, "WRITER CHECKPOINT:", db.Config.WriterCheckpoint.Read(), "CHASER CHECKPOINT:", db.Config.ChaserCheckpoint.Read(), "EPOCH CHECKPOINT:", db.Config.EpochCheckpoint.Read(), "TRUNCATE CHECKPOINT:", db.Config.TruncateCheckpoint.Read()); var enabledNodeSubsystems = runProjections >= RunProjections.System ? new[] { NodeSubsystems.Projections } : new NodeSubsystems[0]; _projections = new Projections.Core.ProjectionsSubsystem(opts.ProjectionThreads, opts.RunProjections); _node = new ClusterVNode(db, vNodeSettings, gossipSeedSource, dbVerifyHashes, opts.MaxMemTableSize, _projections); RegisterWebControllers(enabledNodeSubsystems, vNodeSettings); RegisterUiProjections(); }