public StorageEnvironment(StorageEnvironmentOptions options) { try { _options = options; _dataPager = options.DataPager; _freeSpaceHandling = new FreeSpaceHandling(); _headerAccessor = new HeaderAccessor(this); var isNew = _headerAccessor.Initialize(); _scratchBufferPool = new ScratchBufferPool(this); _journal = new WriteAheadJournal(this); if (isNew) CreateNewDatabase(); else // existing db, let us load it LoadExistingDatabase(); State.FreeSpaceRoot.Name = Constants.FreeSpaceTreeName; State.Root.Name = Constants.RootTreeName; Writer = new TransactionMergingWriter(this, _cancellationTokenSource.Token); if (_options.ManualFlushing == false) _flushingTask = FlushWritesToDataFileAsync(); } catch (Exception) { Dispose(); throw; } }
public PersistentState(string name, StorageEnvironmentOptions options, CancellationToken cancellationToken) { _name = name; _log = LogManager.GetLogger(GetType().Name + "." + name); _cancellationToken = cancellationToken; _env = new StorageEnvironment(options); InitializeDatabase(); }
public StorageEnvironment(StorageEnvironmentOptions options,string debugJournalName) : this(options) { DebugJournal = new DebugJournal(debugJournalName,this); if(Writer != null) Writer.Dispose(); Writer = new TransactionMergingWriter(this, _cancellationTokenSource.Token, DebugJournal); }
public TableStorage(StorageEnvironmentOptions options, IBufferPool bufferPool) { if (options == null) throw new ArgumentNullException("options"); _options = options; this.bufferPool = bufferPool; env = new StorageEnvironment(_options); Initialize(); }
public KeyValueStateMachine(StorageEnvironmentOptions options) { options.IncrementalBackupEnabled = true; _storageEnvironment = new StorageEnvironment(options); using (var tx = _storageEnvironment.NewTransaction(TransactionFlags.ReadWrite)) { _storageEnvironment.CreateTree(tx, "items"); var metadata = _storageEnvironment.CreateTree(tx, "$metadata"); var readResult = metadata.Read("last-index"); if (readResult != null) LastAppliedIndex = readResult.Reader.ReadLittleEndianInt64(); tx.Commit(); } }
public FullTextIndex(StorageEnvironmentOptions options, IAnalyzer analyzer) { Analyzer = analyzer; Conventions = new IndexingConventions(); BufferPool = new BufferPool(); StorageEnvironment = new StorageEnvironment(options); using (var tx = StorageEnvironment.NewTransaction(TransactionFlags.ReadWrite)) { ReadMetadata(tx); ReadLastDocumentId(tx); ReadFields(tx); tx.Commit(); } }
public TimeSeriesStorage(StorageEnvironmentOptions options) { _storageEnvironment = new StorageEnvironment(options); using (var tx = _storageEnvironment.NewTransaction(TransactionFlags.ReadWrite)) { var metadata = _storageEnvironment.CreateTree(tx, "$metadata"); var result = metadata.Read(tx, "id"); if (result == null) // new db{ { Id = Guid.NewGuid(); metadata.Add(tx, "id", new MemoryStream(Id.ToByteArray())); } else { Id = new Guid(result.Reader.ReadBytes(16)); } } }
public RaftEngineOptions(NodeConnectionInfo connection, StorageEnvironmentOptions storageOptions, ITransport transport, IRaftStateMachine stateMachine) { if (connection == null) throw new ArgumentNullException("connection"); if (String.IsNullOrWhiteSpace(connection.Name)) throw new ArgumentNullException("connection.Name"); if (storageOptions == null) throw new ArgumentNullException("storageOptions"); if (transport == null) throw new ArgumentNullException("transport"); if (stateMachine == null) throw new ArgumentNullException("stateMachine"); SelfConnection = connection; StorageOptions = storageOptions; Transport = transport; StateMachine = stateMachine; ElectionTimeout = 1200; HeartbeatTimeout = 300; Stopwatch = new Stopwatch(); MaxLogLengthBeforeCompaction = 32 * 1024; MaxStepDownDrainTime = TimeSpan.FromSeconds(15); MaxEntriesPerRequest = 256; }
private RaftEngineOptions CreateNodeOptions(string nodeName, int messageTimeout, StorageEnvironmentOptions storageOptions, params string[] peers) { var nodeOptions = new RaftEngineOptions(new NodeConnectionInfo { Name = nodeName }, storageOptions, _inMemoryTransportHub.CreateTransportFor(nodeName), new DictionaryStateMachine()) { ElectionTimeout = messageTimeout, HeartbeatTimeout = messageTimeout / 6, Stopwatch = Stopwatch.StartNew() }; return nodeOptions; }