2016-09-27 1 views
1

je m'y suis ce que je crois erreur assez commune "..LedgerError - ResourceNotFound: ledger: resource not found" .Comment déboguer chaincode? LedgerError - ResourceNotFound

Pour faire simple, voici ce que j'ai:

  1. Essayez chaincode simple, les données chaincode_example02.go codes

  2. me tournai hors de la sécurité donc pas de CA

  3. 1 nœud homologue seulement (en utilisant la version 0.5), il est un homologue faire image cker

  4. run en mode dev

Voilà comment je déployé le code en mode dev, pls vérifier si le cli est correct:

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:30303 ./chaincode_example02 

et il montre

Maintenant en essayant de l'interroger, pls vérifie si cette cli est correcte:

peer chaincode query -n mycc -c '{"Function": "query", "Args": ["b"]}' 

mais l'erreur renvoyée étaient:

Error: Error querying chaincode: rpc error: code = 2 desc = "Error:Failed to launch chaincode spec(Could not get deployment transaction for chaincode_example02 - LedgerError - ResourceNotFound: ledger: resource not found)" 

Toute idée? J'ai vérifié tous les journaux sous /var mais n'ai rien trouvé d'utile, ai également vérifié /var/hyperledger et ai vu quelques mises à jour sous /var/hyperledger/production/db.

Cet essai semble assez direct mais surprenant pour obtenir une erreur.

.. alors comment dois-je procéder pour le déboguer?

Répondre

0

La commande suivante,

CORE_CHAINCODE_ID_NAME=mycc CORE_PEER_ADDRESS=0.0.0.0:30303 ./chaincode_example02 

n'a pas deploy le chaincode, il suffit de commencer et enregistrez le chaincode avec le poste de validation.

Une fois qu'il est enregistré, vous devez deploy puis invoke avant de pouvoir query.

Comme décrit here,

First, send a chaincode deploy transaction, only once, to the validating peer. The CLI connects to the validating peer using the properties defined in the core.yaml file. Note: The deploy transaction typically requires a path parameter to locate, build, and deploy the chaincode. However, because these instructions are specific to local development mode and the chaincode is deployed manually, the name parameter is used instead.

peer chaincode deploy -n mycc -c '{"Function":"init", "Args": ["a","100", "b", "200"]}' 

Une fois déployé, vous pouvez l'appeler autant de fois que vous voulez puis query la transaction invoquée,

Pour invoke,

peer chaincode invoke -l golang -n mycc -c '{"Function": "invoke", "Args": ["a", "b", "10"]}' 

et query ,

peer chaincode query -l golang -n mycc -c '{"Function": "query", "Args": ["b"]}' 

Assurez-vous également que vous avez peer en cours d'exécution dans un terminal, en cours d'exécution du chaincode en 2ème terminal, tout en déployant, en invoquant et l'interrogation des transactions à partir du troisième.

+0

Ok, j'ai fait un déploiement, il retourne un long nombre, puis un invoke encore une fois il retourne un certain nombre, puis finalement fait une requête mais il retourne toujours la même erreur. Maintenant quoi? Quelques questions supplémentaires: 1) est-ce que la valeur de l'option -n devrait être 'mycc' pour le déploiement, l'invocation et la requête? 2) Y at-il des fichiers journaux que je peux regarder? 3) Où est le fichier de sortie standard, c'est là que 'fmt.Printf' sort? – Tara

+0

-n est censé être un identifiant de transaction mais lorsque vous utilisez le mode développement, vous n'en avez pas besoin. courez-vous en mode développement? –

+0

Oui mode de développement, pouvez-vous répondre à trois de mes questions d'abord. J'ai aussi vu qu'un nouveau conteneur de docker a été créé pour ma chaincode déployée .. alors, quel conseil donneriez-vous? – Tara