我试图让Hyperledger在复制的私有池模式下工作。他们的论坛中没有回复,因此这里的问题。此外,这个问题纯粹是关于技术错误。
Hyperledger 使用 Phoenix、Cowboy、Elixir、Ecto、Erlang、Postgre SQL、Node.js 等。主节点处理请求,在几个表中插入一行并向辅助节点广播消息。辅助节点执行类似的操作并将消息发送回主节点以继续处理。这是问题开始的地方。主节点现在尝试读取它之前插入的行,但得到 nil 结果。此后引发以下异常。
** (exit) an exception was raised:
** (RuntimeError) expected :action/2 to return a Plug.Conn
(hyperledger) web/controllers/log_entry_controller.ex:1: Hyperledger.LogEntryController.phoenix_controller_pipeline/2
(hyperledger) lib/phoenix/router.ex:297: Hyperledger.Router.dispatch/2
(hyperledger) lib/phoenix/router.ex:2: Hyperledger.Router.call/2
(hyperledger) lib/hyperledger/endpoint.ex:1: Hyperledger.Endpoint.phoenix_endpoint_pipeline/1
(hyperledger) lib/plug/debugger.ex:90: Hyperledger.Endpoint."call (overridable 3)"/2
(hyperledger) lib/phoenix/endpoint/render_errors.ex:34: Hyperledger.Endpoint.call/2
(phoenix) lib/phoenix/endpoint/cowboy_handler.ex:50: Phoenix.Endpoint.CowboyHandler.upgrade/4
(cowboy) src/cowboy_protocol.erl:435: :cowboy_protocol.execute/4
为什么主节点无法读取在广播发送到辅助节点之前插入的内容。我怀疑与陈旧的数据库连接或类似的事情有关。任何帮助将不胜感激。如果我应该分享其他信息,请告诉我。