Совершить ошибку с EventStore

Я вижу следующую ошибку в EventStore Джонатона Оливера:

ОШИБКА: 23505: повторяющееся значение ключа нарушает уникальное ограничение "ix_commits_revisions"

Есть идеи, почему это происходит?


person JD.    schedule 11.03.2013    source источник


Ответы (1)


Предполагая, что индекс такой, как я его гуглил:

CREATE UNIQUE INDEX IX_Commits_Revisions ON Commits (
     StreamId, StreamRevision, Items);

Два Save записали эквивалентные изменения, что представляет собой нарушение оптимистичного параллелизма.

Как правило, это будет преобразовано уровнем Common Domain (или подобным) в EventStore ConcurrencyException.

Решение состоит в том, чтобы повторно применить команду к новой загрузке событий в потоке.

Если вы кэшируете IEventRepository, вы не должны этого делать, поскольку все, у кого есть доступ на запись к базе данных, могут в равной степени записывать в поток событий.

Откуда я все это знаю? Документы Readme в пакете NuGet очень четко объясняют причину этого, и вы воруете у себя/своего работодателя, если не читаете и не перечитываете их, пока не сможете решить это самостоятельно!

person Ruben Bartelink    schedule 11.03.2013