Fabric Composer 的 Bluemix 区块链服务错误

Bluemix Blockchain service error with Fabric Composer

我使用 fabric composer v0.7.0 将业务网络部署到 Bluemix (v0.6) 上的区块链服务。

应用程序运行一段时间后出现以下错误:

throw er; // Unhandled 'error' event
^

Error
at ClientDuplexStream._emitStatusIfDone (/home/vcap/app/node_modules/grpc/src/node/src/client.js:189:19)
at ClientDuplexStream._receiveStatus (/home/vcap/app/node_modules/grpc/src/node/src/client.js:169:8)

执行composer network deploy命令时有时也会发生这种情况。

This problem occurs because of the way the event hub works in Hyperledger Fabric v0.6. The Node.js client for Fabric hfc maintains a persistent connection to the event hub but does not cope well with network blips/disconnects etc (it just kills the client). Persistent connections aren't really cloud friendly as the network/routing will just terminate idle connections after a while. https://whosebug.com/users/7512977/simon-stone

处理方法:

  1. 您可以(可能应该)拥有您的应用程序的多个实例 运行 所以当一个崩溃时另一个仍然 运行 接管。
  2. 在每个链代码调用之前调用 BusinessNetworkConnection.connect() 以重新创建事件中心连接。 请注意,这不是很有效,因为建立连接需要一段时间

如果使用 composer-cli 部署时出现错误,您可能需要在一分钟左右后再次尝试执行该命令。

在设定的时间间隔内调用 BusinessNetworkConnection.ping() 对解决问题没有帮助,因为问题是由事件中心引起的,并且事件仅在实际交易中发布。 ping() 是不创建交易的只读链代码查询。