Я использую Hyperledger Fabric 1.4.1, со службой заказа Kafka, Couch DB в качестве stateDB, цепным кодом Java и Java SDK.У меня истекло время ожидания, когда я пытаюсь отправить большие данные в канал и затем запросить их обратно.
Размер данных отправленной мной транзакции составляет 512 КБ, и я могу запросить ее у коллег.
Я пытался отправить его 7 раз с одним и тем же идентификатором, и я могу получить все 7 историй с помощью функции shim getHistoryForKey
.Но когда я отправил его 8 раз с одним и тем же идентификатором, getHistoryForKey
не удалось.
Ниже показано сообщение об ошибке (от коллег):
Error: endorsement failure during query. response: status:500 message:"failed to execute transaction fdfbc5b72efd688136c777f5b114a3cedc62339e42f6c39a27e86ca11b8e3d14: error sending: timeout expired while executing transaction"
Я попытался увеличить время ожиданиясо следующими параметрами и их комбинациями в peer и клиенте:
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,5 МБ, и я попытался запросить данные 4 МБ (что составляет около 8 копий) у однорангового узла, но не смог.см. следующее сообщение об ошибке:
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.
Кажется, что есть ограничение grpc при запуске докера цепочки кодов Java.
Мы протестировали с помощью go chaincode, такой проблемы не возникает.