部署后命令中的一致性超时

时间:2018-09-17 11:55:59

标签: elixir phoenix-framework cqrs event-sourcing commanded

在使用Commanded和Phoenix生成的事件源应用程序中,在部署到生产环境(Heroku)后处理命令期间,我们得到了consistency_timeout

以下是日志输出:

[debug] Processing with Web.CountryController.select_country_for_mission/2
[info] Invoicing.Commands.SelectCountryForMission dispatch start
[debug] Locating aggregate process for `Invoicing.Mission` with UUID "mission-23"
[debug] Invoicing.Mission<mission-23@4> executing command: %Invoicing.Commands.SelectCountryForMission{mission_id: "23", country_id: "42"}
[debug] Appended 1 event(s) to stream "mission-23"
[info] Invoicing.Commands.SelectCountryForMission succeeded in 180ms
[warn] Consistency timeout waiting for aggregate "mission-23" at version 5

如果我两次提交表单,则其中一个命令已成功处理-但读取模型仍未更新。几分钟后,问题在生产中消失了。在我的机器上,问题似乎没有消失。

应用程序使用带有Ecto投影命令的事件存储。

版本:

  • 命令0.17.0
  • commanded_ecto_projections 0.7.1
  • commanded_eventstore_adapter 0.4.0
  • 事件存储区0.14.0
  • Erlang 20.3.2
  • Elixir 1.6.5
  • 凤凰1.3.4

1 个答案:

答案 0 :(得分:1)

我不熟悉Heroku部署,但是您正在运行多个节点吗?如果是,那么如何配置命令存储库和事件存储库?

通过Commanded's Gitter chat调试问题可能会更容易。