0

使用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执行命令时有时也会发生这种情况。

4

1 回答 1

1

发生此问题的原因是事件中心在 Hyperledger Fabric v0.6 中的工作方式。Fabric 的 Node.js 客户端hfc保持与事件中心的持久连接,但不能很好地处理网络信号/断开连接等(它只会杀死客户端)。持久连接并不是真正的云友好,因为网络/路由会在一段时间后终止空闲连接。 https://stackoverflow.com/users/7512977/simon-stone

处理方法:

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

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

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

于 2017-05-02T22:28:17.787 回答