4

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

ブロードキャストがセカンダリ ノードに送信される前に、プライマリ ノードが挿入したものを読み取ることができないのはなぜですか。ここで、古いデータベース接続などと関係があるのではないかと疑っています。どんな助けでも大歓迎です。追加情報を共有する必要がある場合はお知らせください。

4

1 に答える 1

9

コントローラーに を返さないアクションがありますconn。すべてのアクションはconn、更新された を受け取って返す必要がありますconn

于 2015-07-29T06:43:30.247 に答える