2017-01-13 2 views
1

Ich habe mit HFC SDK für Node.js gearbeitet und es funktioniert, aber seit der letzten Nacht habe ich einige Probleme.IBM BLUEMIX BLOCKCHAIN ​​SDK-DEMO fehlgeschlagen

Wenn helloblockchain.js nur wenige Male ausgeführt arbeitet, die meiste Zeit ich diese Fehlermeldung erhalten, wenn es einen neuen Benutzer zu registrieren versucht:

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 

Andere Zeiten, die sich einschreiben Werke und das Scheitern erscheint die chaincode bereitstellen:

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"} 

Oder:

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}]} 

Dieser Code gestern gearbeitet, so Ich weiß nicht, was passieren könnte.

Weiß jemand, wie kann ich es beheben?

Danke, Javier.

ibm-Bluemix

blockchain

Antwort

0

Diese Arten von intermittierenden Probleme sind in der Regel zu GRPC verwandt. Ein erster Vorschlag besteht darin, sicherzustellen, dass Sie mindestens die GRPC-Version 1.0.0 verwenden.

Wenn Sie einen Mac verwenden, sollte die maximale Anzahl der geöffneten Dateideskriptoren überprüft werden (unter Verwendung von ulimit -n). Manchmal ist dies anfangs auf einen niedrigen Wert wie 256 eingestellt, daher kann eine Erhöhung des Werts hilfreich sein.

Es gibt einige GRPC-Probleme mit ähnlichen Symptomen.

Es gibt eine grpc.initial_reconnect_backoff_ms Eigenschaft, die in einigen dieser Fragen erwähnt wird. Wenn Sie den Wert über die 1000-ms-Ebene hinaus erhöhen, können Sie die Häufigkeit der Probleme verringern. Im Folgenden finden Sie Anweisungen, wie die Datei helloblockchain.js geändert werden kann, um diese Eigenschaft auf einen höheren Wert festzulegen.

  1. Öffnen Sie die Datei helloblockchain.js im Hyperledger Fabric Client-Beispiel und finden Sie die enrollAndRegisterUsers-Funktion.
  2. Fügen Sie “grpc.initial_reconnect_backoff_ms": 5000 zum setMemberServicesUrl Aufruf hinzu.

    chain.setMemberServicesUrl(ca_url, { 
         pem: cert, "grpc.initial_reconnect_backoff_ms": 5000 
    }); 
    
  3. “grpc.initial_reconnect_backoff_ms": 5000 zum addPeer Anruf hinzufügen.

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

Beachten Sie, dass die grpc.initial_reconnect_backoff_ms-Eigenschaft kann die Häufigkeit von Problemen reduzieren, aber es wird nicht unbedingt alle Probleme beseitigen.

Die Verbindung zum eventhub, die in der Datei helloblockchain.js erstellt wird, kann ebenfalls ein Faktor sein. Es gibt eine frühere Version des Hyperledger Fabric Clients, die den eventhub nicht verwendet. Diese frühere Version könnte versucht werden, um festzustellen, ob dies einen Unterschied macht. Nachdem Sie git clone https://github.com/IBM-Blockchain/SDK-Demo.git ausgeführt haben, führen Sie git checkout b7d5195 aus, um dieses vorherige Level zu verwenden. Bevor node helloblockchain.js aus einem Node.js-Befehlsfenster ausgeführt wird, kann der Befehl git status verwendet werden, um die Codeebene zu überprüfen, die verwendet wird.