首页 > 解决方案 > 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-org1gateway.connect配置对象中删除离线对等点,应用程序将正常工作,如下所示:

(...)
"organizations": {
        "org1": {
            "mspid": "org1",
            "peers": [
                "peer1-org1", "peer2-org1"
            ],
            "certificateAuthorities": [
                "rca-org1"
            ]
        }
    },
(...)

如果 peer2 不可用,我该如何完成这项工作并告诉图书馆继续使用 peer1?

标签: hyperledger-fabric

解决方案


推荐阅读