2016-04-07 12 views
1

時々、私はコマンドを処理しようとしたときにCirqusで例外を受け取ります。これはさまざまなタイプのコマンドで起こりますが、常にこの特定の集約ルートタイプで発生します(登録フォームとしましょう)。私たちは、イベントを削除したり、イベントテーブルを何らかの形で混乱させたりしていないので、何が問題を引き起こす可能性があるのでしょうか?Cirqus: "シーケンス番号0のイベントが必要です"例外

正確な(しかし、匿名化)エラーメッセージは次のとおりです。私はこの集約ID用のデータベースを照会し、見返りに37回のイベントを得た例外の最新のインスタンスをデバッグするために例えばのでTried to apply event with sequence number 12 to aggregate root of type RegistrationForm with ID d863ac79-6bc0-480d-9d83-30b7696e7ea1 with current sequence number -1. Expected an event with sequence number 0.

。私はシーケンスをチェックし、シーケンスは正しいように見えました。また、グローバルシーケンスも少なくとも時系列的に正しいことを確認しました。次に、 "メタ"列がレコードとは異なるグローバルシーケンスを持っているかどうかを確認しましたが、それもOKをチェックアウトしました。

私が最も混乱しているのは、他の登録フォームが通過できることです。私たちのログを見ると、私が特定できるパターンはなく、また、その時間の約3〜5%しか発生しません。

私は何が疑問に思えますか?この問題の原因は何ですか?どうすればデバッグできますか?将来起こることをどうやって防ぐことができますか?

システムの仕様:Cirqus 0.63.12を使用して(そして0.66.4でテスト済み)、Postgres 9.4をデータベースとして使用しています(Cirqus.Postgresパッケージのv0.63.12を使用しています)。 )。

答えて

1

問題が見つかりました。 PostgreSQLのイベントソースのSQLコードにOrder Byという句がなく、場合によってはイベントが返されているようです。このプルリクエストを問題の修正提案として提出しました:https://github.com/d60/Cirqus/pull/75

関連する問題