我正在使用带有Kafka订购服务,Couch DB作为stateDB,Java chaincode和Java SDK的Hyperledger Fabric 1.4.1。 当我尝试向通道发送大数据然后查询回来时,我遇到超时过期的问题。
我发送的事务的数据大小为512KB,我可以从同级查询它。
我尝试使用相同的ID将其发送7次,并且可以使用匀场函数getHistoryForKey
获取所有7个历史记录。但是当我用相同的ID发送8次时,getHistoryForKey
失败了。
错误消息如下所示(来自同级):
Error: endorsement failure during query. response: status:500 message:"failed to execute transaction fdfbc5b72efd688136c777f5b114a3cedc62339e42f6c39a27e86ca11b8e3d14: error sending: timeout expired while executing transaction"
我尝试通过以下选项及其在对等方和客户端中的组合来扩展超时时间:
CORE_CHAINCODE_EXECUTETIMEOUT="120s"
CORE_LEDGER_STATE_COUCHDBCONFIG_REQUESTTIMEOUT="120s"
# (seems this setting is not for Hyperledger Fabric)
CORE_PEER_GRPCOPTIONS_REQUESET_TIMEOUT="120s"
但是对于我来说,他们没有帮助。 我还注意到测试数据的7个副本大约为3.5MB,我尝试从同级查询4MB数据(大约8个副本),但是失败了。
当我们检查chaincode运行时docker时,我们看到以下错误消息:
SEVERE: An error occured on the chaincode stream. Shutting down the chaincode stream.
io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED:
io.grpc.netty.NettyClientTransport$3: Frame size 6294852 exceeds maximum: 4194304.
运行java chaincode docker似乎存在grpc限制。
我们使用go链码进行了测试,我们没有遇到相同的问题。
答案 0 :(得分:0)
我们设法通过覆盖<connectionStrings>
<add name="Hololens"
connectionString="Server=tcp:adress.net,1433;Initial Catalog=HololensDB;Persist Security Info=False;User ID=HololensUser;Password=hololens;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
providerName="System.Data.SqlClient"/>
</connectionStrings>
类来解决此问题
ChaincodeBase
我已经在Fabric Jira上提交了一张票证,以支持更改变量而不覆盖它。