Цепной код создается, но не отображается в списке созданных кодов. - PullRequest
1 голос
/ 24 июня 2019

Я использую Hyperledger Fabric 1.4.0

У меня есть 1 орг (Org1), 2 пира (peer0, peer1) и два заказчика (ord0, ord1). Пиры используют couchdb в качестве бэкэнда хранения.

Я могу успешно install мой цепной код, затем instantiate это.

При просмотре журналов peer0 образ докера создается и контейнер запускается. peer0 также получает и подтверждает запрос REGISTER, отправленный двоичным файлом chaincode в контейнере:

2019-06-24 10:15:57.003 UTC [dockercontroller] createContainer -> DEBU b563 created container {"imageID": "nid1-peer0-mynet-mychain-v1-613158e6e99c2c9e7d567e8b57fe2dfb56444f7fdcbc263dd1f61626a374843d", "containerID": "nid1-peer0-mynet-mychain-v1"}
2019-06-24 10:15:57.160 UTC [dockercontroller] Start -> DEBU b564 Started container nid1-peer0-mynet-mychain-v1
2019-06-24 10:15:57.160 UTC [container] unlockContainer -> DEBU b565 container lock deleted(mychain-v1)
2019-06-24 10:15:57.181 UTC [chaincode] handleMessage -> DEBU b566 [] Fabric side handling ChaincodeMessage of type: REGISTER in state created
2019-06-24 10:15:57.181 UTC [chaincode] HandleRegister -> DEBU b567 Received REGISTER in state created
2019-06-24 10:15:57.182 UTC [chaincode] Register -> DEBU b568 registered handler complete for chaincode mychain:v1
2019-06-24 10:15:57.182 UTC [chaincode] HandleRegister -> DEBU b569 Got REGISTER for chaincodeID = name:"mychain:v1" , sending back REGISTERED
2019-06-24 10:15:57.182 UTC [chaincode] HandleRegister -> DEBU b56a Changed state to established for name:"mychain:v1"
2019-06-24 10:15:57.182 UTC [chaincode] sendReady -> DEBU b56b sending READY for chaincode name:"mychain:v1"
2019-06-24 10:15:57.182 UTC [chaincode] sendReady -> DEBU b56c Changed to state ready for chaincode name:"mychain:v1"
2019-06-24 10:15:57.182 UTC [chaincode] Launch -> DEBU b56d launch complete
2019-06-24 10:15:57.182 UTC [chaincode] Execute -> DEBU b56e Entry
2019-06-24 10:15:57.182 UTC [chaincode] handleMessage -> DEBU b56f [1a98f442] Fabric side handling ChaincodeMessage of type: COMPLETED in state ready

Несмотря на это, код цепочки не зарегистрирован в couchdb:

$ peer chaincode list --instantiated -C mychannel
2019-06-24 11:26:29.317 BST [main] InitCmd -> WARN 001 CORE_LOGGING_LEVEL is no longer supported, please use the FABRIC_LOGGING_SPEC environment variable
2019-06-24 11:26:29.332 BST [main] SetOrdererEnv -> WARN 002 CORE_LOGGING_LEVEL is no longer supported, please use the FABRIC_LOGGING_SPEC environment variable
Get instantiated chaincodes on channel mychannel:

peer0 регистрируется сразу после отправки команды list:

2019-06-24 10:26:30.057 UTC [couchdb] ReadDocRange -> DEBU c02e [mychannel_lscc] HTTP/1.1 200 OK
Transfer-Encoding: chunked
Cache-Control: must-revalidate
Content-Type: application/json
Date: Mon, 24 Jun 2019 10:26:30 GMT
Server: CouchDB/2.1.1 (Erlang OTP/18)
X-Couch-Request-Id: 20d0beb9c3
X-Couchdb-Body-Time: 0

2a
{"total_rows":0,"offset":0,"rows":[

]}

0

Если я пытаюсь вызвать метод в коде цепи, я получаю эту ошибку:

Error: endorsement failure during invoke. response: status:500 message:"make sure the chaincode mychain has been successfully instantiated and try again: chaincode mychain not found"

, который просто подтверждает, что цепной код не был зарегистрирован в сети.

Обновление

Я понял, что упустил важную деталь: журналы одноранговых узлов неоднократно сообщают об ошибках подключения к заказчику, например ::

.
2019-06-24 11:30:35.931 UTC [ConnProducer] NewConnection -> ERRO 100e6 Failed connecting to ord0.mynet.example.com , error: context deadline exceeded

, что может быть причиной того, что сообщение "Цепной код" не распространяется ...

1 Ответ

0 голосов
/ 24 июня 2019

После долгих отладок выяснилось, что проблема довольно проста: партнеры не могли общаться с заказчиками.

В моем конкретном случае адреса заказчиков были неверны в configtx.yaml. Их исправление привело к тому, что процесс создания цепного кода был полностью успешным.

...