简体   繁体   English

IBM BLUEMIX BLOCKCHAIN SDK-DEMO失败

[英]IBM BLUEMIX BLOCKCHAIN SDK-DEMO failing

I have been working with HFC SDK for Node.js and it used to work, but since last night I am having some problems. 我一直在使用HFC SDK for Node.js并且它曾经工作,但从昨晚起我遇到了一些问题。

When running helloblockchain.js only few times works, most time I get this error when it tries to enroll a new user: 当运行helloblockchain.js只运行几次时,大多数时候我在尝试注册新用户时遇到此错误:

E0113 11:56:05.983919636    5288 handshake.c:128]            Security handshake failed: {"created":"@1484304965.983872199","description":"Handshake read failed","file":"../src/core/lib/security/transport/handshake.c","file_line":237,"referenced_errors":[{"created":"@1484304965.983866102","description":"FD shutdown","file":"../src/core/lib/iomgr/ev_epoll_linux.c","file_line":948}]}

Error:  Failed to register and enroll JohnDoe: Error

Other times, the enroll works and the failure appears deploying the chaincode: 其他时候,注册工作和失败似乎部署链代码:

Enrolled and registered JohnDoe successfully

Deploying chaincode ...
E0113 12:14:27.341527043    5455 handshake.c:128]            Security handshake failed: {"created":"@1484306067.341430168","description":"Handshake read failed","file":"../src/core/lib/security/transport/handshake.c","file_line":237,"referenced_errors":[{"created":"@1484306067.341421859","description":"FD shutdown","file":"../src/core/lib/iomgr/ev_epoll_linux.c","file_line":948}]}

Failed to deploy chaincode: request={"fcn":"init","args":["a","100","b","200"],"chaincodePath":"chaincode","certificatePath":"/certs/peer/cert.pem"}, error={"error":{"code":14,"metadata":{"_internal_repr":{}}},"msg":"Error"}

Or: 要么:

Enrolled and registered JohnDoe successfully

Deploying chaincode ...
E0113 12:15:27.448867739    5483 handshake.c:128]            Security handshake failed: {"created":"@1484306127.448692244","description":"Handshake read failed","file":"../src/core/lib/security/transport/handshake.c","file_line":237,"referenced_errors":[{"created":"@1484306127.448668047","description":"FD shutdown","file":"../src/core/lib/iomgr/ev_epoll_linux.c","file_line":948}]}
events.js:160
  throw er; // Unhandled 'error' event
  ^

Error
at ClientDuplexStream._emitStatusIfDone (/usr/lib/node_modules/hfc/node_modules/grpc/src/node/src/client.js:189:19)
at ClientDuplexStream._readsDone (/usr/lib/node_modules/hfc/node_modules/grpc/src/node/src/client.js:158:8)
at readCallback (/usr/lib/node_modules/hfc/node_modules/grpc/src/node/src/client.js:217:12)
E0113 12:15:27.563487641    5483 handshake.c:128]            Security handshake failed: {"created":"@1484306127.563437122","description":"Handshake read failed","file":"../src/core/lib/security/transport/handshake.c","file_line":237,"referenced_errors":[{"created":"@1484306127.563429661","description":"FD shutdown","file":"../src/core/lib/iomgr/ev_epoll_linux.c","file_line":948}]}

This code worked yesterday, so I don't know what could be happening. 这段代码昨天有效,所以我不知道会发生什么。

Does anybody know how can I fix it? 有谁知道我该怎么办?

Thanks, Javier. 谢谢,哈维尔。

ibm-bluemix IBM-bluemix

blockchain blockchain

These types of intermittent issues are usually related to GRPC. 这些类型的间歇性问题通常与GRPC有关。 An initial suggestion is to ensure that you are using at least GRPC version 1.0.0. 最初的建议是确保您至少使用GRPC版本1.0.0。

If you are using a Mac, then the maximum number of open file descriptors should be checked (using ulimit -n ). 如果您使用的是Mac,则应检查打开的文件描述符的最大数量(使用ulimit -n )。 Sometimes this is initially set to a low value such as 256, so increasing the value could help. 有时这最初会设置为较低的值,例如256,因此增加该值可能会有所帮助。

There are a couple of GRPC issues with similar symptoms. 有几个GRPC问题有类似的症状。

There is a grpc.initial_reconnect_backoff_ms property that is mentioned in some of these issues. 在某些问题中提到了grpc.initial_reconnect_backoff_ms属性。 Increasing the value past the 1000 ms level might help reduce the frequency of issues. 将值增加到1000毫秒以上可能有助于减少问题的发生频率。 Below are instructions for how the helloblockchain.js file can be modified to set this property to a higher value. 下面是如何修改helloblockchain.js文件以将此属性设置为更高值的说明。

  1. Open the helloblockchain.js file in the Hyperledger Fabric Client example and find the enrollAndRegisterUsers function. 打开Hyperledger Fabric Client示例中的helloblockchain.js文件,找到enrollAndRegisterUsers函数。
  2. Add “grpc.initial_reconnect_backoff_ms": 5000 to the setMemberServicesUrl call. “grpc.initial_reconnect_backoff_ms": 5000添加到setMemberServicesUrl调用中。

     chain.setMemberServicesUrl(ca_url, { pem: cert, "grpc.initial_reconnect_backoff_ms": 5000 }); 
  3. Add “grpc.initial_reconnect_backoff_ms": 5000 to the addPeer call. “grpc.initial_reconnect_backoff_ms": 5000添加到addPeer调用。

     chain.addPeer("grpcs://" + peers[i].discovery_host + ":" + peers[i].discovery_port, {pem: cert, "grpc.initial_reconnect_backoff_ms": 5000 }); 

Note that setting the grpc.initial_reconnect_backoff_ms property may reduce the frequency of issues, but it will not necessarily eliminate all issues. 请注意,设置grpc.initial_reconnect_backoff_ms属性可能会减少问题的发生频率,但不一定会消除所有问题。

The connection to the eventhub that is made in the helloblockchain.js file can also be a factor. 与helloblockchain.js文件中的eventhub的连接也可能是一个因素。 There is an earlier version of the Hyperledger Fabric Client that does not utilize the eventhub. 有一个早期版本的Hyperledger Fabric Client没有使用eventhub。 This earlier version could be tried to determine if this makes a difference. 可以尝试使用此早期版本来确定这是否有所不同。 After running git clone https://github.com/IBM-Blockchain/SDK-Demo.git , run git checkout b7d5195 to use this prior level. 运行git clone https://github.com/IBM-Blockchain/SDK-Demo.git ,运行git checkout b7d5195以使用此先前级别。 Before running node helloblockchain.js from a Node.js command window, the git status command can be used to check the code level that is being used. 在从Node.js命令窗口运行node helloblockchain.js之前,可以使用git status命令检查正在使用的代码级别。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM