public void Store(UncommittedEventStream eventStream) { var commit = new MongoCommit { CommitId = eventStream.CommitId, EventSourceId = eventStream.SourceId, FromVersion = eventStream.InitialVersion, ToVersion = eventStream.Last().EventSequence, Events = eventStream.Select(e => e.EventIdentifier).ToArray(), Processed = false }; try { try { SafellyInsertCommit(commit); InsertEvents(eventStream); MarkCommitAsProcessed(commit.CommitId); } catch { RemoveUnprocessedCommit(commit.CommitId); throw; } } catch (MongoSafeModeException ex) { if (ex.Message.Contains(CONCURRENCY_ERROR_CODE)) { throw new ConcurrencyException(eventStream.SourceId, -1); } } }
private void SafellyInsertCommit(MongoCommit commit) { try { var result = _commits.Insert(commit, SafeMode.True); _commits.Validate(); } catch (MongoSafeModeException ex) { if (ex.Message.Contains(CONCURRENCY_ERROR_CODE)) { throw new ConcurrencyException(commit.EventSourceId, commit.FromVersion); } } }
private void RemoveEventsForCommit(MongoCommit commit) { _events.Remove(Query.In("EventIdentifier", BsonArray.Create(commit.Events))); }
public void Store(UncommittedEventStream eventStream) { var commit = new MongoCommit { CommitId = eventStream.CommitId, EventSourceId = eventStream.SourceId, FromVersion = eventStream.InitialVersion, ToVersion = eventStream.Last().EventSequence, Events = eventStream.Select(e=>e.EventIdentifier).ToArray(), Processed = false }; try { try { SafellyInsertCommit(commit); InsertEvents(eventStream); MarkCommitAsProcessed(commit.CommitId); } catch { RemoveUnprocessedCommit(commit.CommitId); throw; } } catch (MongoSafeModeException ex) { if (ex.Message.Contains(CONCURRENCY_ERROR_CODE)) throw new ConcurrencyException(eventStream.SourceId, -1); } }
private void SafellyInsertCommit(MongoCommit commit) { try { var result = _commits.Insert(commit, SafeMode.True); _commits.Validate(); } catch (MongoSafeModeException ex) { if (ex.Message.Contains(CONCURRENCY_ERROR_CODE)) throw new ConcurrencyException(commit.EventSourceId, commit.FromVersion); } }
public void Store(UncommittedEventStream eventStream) { var commit = new MongoCommit { CommitId = eventStream.CommitId, Events = eventStream.Select(evt => new MongoStoredEvent { Data = evt.Payload, EventIdentifier = evt.EventIdentifier, EventSequence = evt.EventSequence, EventSourceId = evt.EventSourceId, EventTimeStamp = evt.EventTimeStamp, Version = evt.EventVersion }).ToList() }; _mongoServer.Connect(); var db = _mongoServer.GetDatabase(_databaseName); var coll = db.GetCollection<MongoCommit>(_collectionName); coll.Save(commit, _safeMode); _mongoServer.Disconnect(); }