public virtual void Initialize() { if (Interlocked.Increment(ref _initialized) > 1) { return; } Logger.Debug(Messages.InitializingStorage); TryMongo(() => { PersistedCommits.CreateIndex( IndexKeys .Ascending(MongoCommitFields.Dispatched) .Ascending(MongoCommitFields.CommitStamp), IndexOptions.SetName(MongoCommitIndexes.Dispatched).SetUnique(false) ); PersistedCommits.CreateIndex( IndexKeys.Ascending( MongoCommitFields.BucketId, MongoCommitFields.StreamId, MongoCommitFields.StreamRevisionFrom, MongoCommitFields.StreamRevisionTo //,MongoCommitFields.FullqualifiedStreamRevision ), IndexOptions.SetName(MongoCommitIndexes.GetFrom).SetUnique(true) ); PersistedCommits.CreateIndex( IndexKeys.Ascending( MongoCommitFields.BucketId, MongoCommitFields.StreamId, MongoCommitFields.CommitSequence ), IndexOptions.SetName(MongoCommitIndexes.LogicalKey).SetUnique(true) ); PersistedCommits.CreateIndex( IndexKeys.Ascending(MongoCommitFields.CommitStamp), IndexOptions.SetName(MongoCommitIndexes.CommitStamp).SetUnique(false) ); PersistedStreamHeads.CreateIndex( IndexKeys.Ascending(MongoStreamHeadFields.Unsnapshotted), IndexOptions.SetName(MongoStreamIndexes.Unsnapshotted).SetUnique(false) ); if (_options.ServerSideOptimisticLoop) { PersistedCommits.Database.GetCollection("system.js").Save(new BsonDocument { { "_id", "insertCommit" }, { "value", new BsonJavaScript(_options.GetInsertCommitScript()) } }); } EmptyRecycleBin(); }); }