Fabric Go SDK DeliverResponse_Status 404错误解决
问题描述
在使用Fabric Go SDK安装链码之后,通过LifecycleApproveCC
批准链码时,终端会快速输出错误如下
bash
[fabsdk/fab] 2022/02/08 13:16:18 UTC - dispatcher.(*Dispatcher).handleDeliverResponseStatus -> WARN Got deliver response status event: &peer.DeliverResponse_Status{Status:404}. Disconnecting...
[fabsdk/fab] 2022/02/08 13:16:18 UTC - client.(*Client).monitorConnection -> WARN Event client has disconnected. Details: got error status from deliver server: NOT_FOUND
[fabsdk/fab] 2022/02/08 13:16:18 UTC - client.(*Client).monitorConnection -> WARN Attempting to reconnect...
[fabsdk/fab] 2022/02/08 13:16:18 UTC - client.(*Client).reconnect -> INFO Event client has reconnected
环境描述
fabric network通过docker compose部署,使用桥接网络与主机网络隔离,节点容器均监听自身7051和7053端口,每个容器将此两个端口映射至主机的独立未使用端口。
fabric sdk app运行在主机网络中,需要修改各节点endpoint至127.0.0.1。
通过LifecycleApproveCC
批准链码时,便会导致错误。
问题解决
fabric sdk app位于主机网络,无法通过7051端口访问节点,需重定向至其7051映射的主机端口。
在fabric sdk app的config.yaml配置文件中,需要指定entityMatchers中urlSubstitutionExp的端口。
例:
yaml
- pattern: (\w+).org2.flxdu.cn:(\d+)
urlSubstitutionExp: ${1}.org2.flxdu.cn:${2}
sslTargetOverrideUrlSubstitutionExp: ${1}.org2.flxdu.cn
mappedHost: peer0.org2.flxdu.cn
将第二行${2}修改为指定端口:
yaml
- pattern: (\w+).org2.flxdu.cn:(\d+)
urlSubstitutionExp: ${1}.org2.flxdu.cn:7091
sslTargetOverrideUrlSubstitutionExp: ${1}.org2.flxdu.cn
mappedHost: peer0.org2.flxdu.cn
修改完成后再批准链码即可。
总结
花了8个小时解决此BUG,其中玩了一小会儿游戏,上了不少分hhhhh