#hyperledger-fabric
#hyperledger-fabric
Вопрос:
У меня есть тестовая среда для hyperledger fabric 2.2. Две организации с 2 одноранговыми узлами в каждой.
Я хотел имитировать автономный одноранговый узел, поэтому я отключился peer2-org1
в целях тестирования, что приводит к сбою приложения для org1.
Это код приложения узла, который в основном взят из примера:
this.gateway = new Gateway();
const gatewayOpts = {
wallet: this.wallet,
identity: username,
discovery: {
enabled: true,
asLocalhost: false
}
} as GatewayOptions;
await this.gateway.connect(this.config, gatewayOpts);
this.network = await this.gateway.getNetwork('somechannel');
Последняя команда gateway.getNetwork
выдает следующее исключение:
Error: Failed to connect before the deadline on Discoverer- name: peer2-org1, url:grpcs://peer2-org1:7051, connected:false, connectAttempted:true
at checkState (/usr/src/app/node_modules/@grpc/grpc-js/build/src/client.js:69:26)
at Timeout._onTimeout (/usr/src/app/node_modules/@grpc/grpc-js/build/src/channel.js:292:17)
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7) {
connectFailed: true
}
Я обнаружил, что приложение будет работать, если я удалю автономный узел peer2-org1
из gateway.connect
объекта конфигурации, который выглядит следующим образом:
(...)
"organizations": {
"org1": {
"mspid": "org1",
"peers": [
"peer1-org1", "peer2-org1"
],
"certificateAuthorities": [
"rca-org1"
]
}
},
(...)
Как я могу заставить это работать и сообщить библиотеке продолжить работу с peer1, если peer2 недоступен?
Комментарии:
1. Ваши одноранговые узлы работают в docker в вашей локальной системе или они находятся на отдельных серверах?
2. Это локальная среда docker-compose. Но приложение узла также запущено внутри среды docker (вот почему значение asLocalhost равно false).