【问题标题】:Hyperledger Fabric 2.0 - gRPC message exceeds maximum size 4194304: 5947481Hyperledger Fabric 2.0 - gRPC 消息超出最大大小 4194304:5947481
【发布时间】:2024-01-12 17:32:01
【问题描述】:

我们有一个 Hyperleger Fabric 网络启动并运行,我们在其中插入了大量数据。当我们查询所有数据时,它给出了以下错误:

gRPC 消息超过最大大小 4174304: 5747481

如何以及在哪里可以解决此问题?

我是否需要在每个组织的连接配置文件中粘贴这个“grpc.max_receive_message_length”:-1?如果需要,我是否还需要重建整个网络或者这个更改是否足够?

代码:

    "peers": {
    "peer0.test.com": {
        "url": "grpcs://localhost:17051",
        "tlsCACerts": {
            "pem": "-----BEGIN CERTIFICATE-----\ntestestest...
        },
        "grpcOptions": {
            "ssl-target-name-override": "peer0.test.com",
            "hostnameOverride": "peer0.test.com",
            "grpc.NettyChannelBuilderOption.maxInboundMessageSize": 104857600

        }
    }
}

【问题讨论】:

  • 您使用的是哪个 SDK?节点还是 Java?
  • 我在 Java spring boot 中使用 Java SDK 只是为了执行 CRUD 操作。网络是使用 shell 脚本创建的(查找新的 2.0 github 示例项目)。链码是用 Go 编写的。
  • 我遇到了同样的问题。你已经解决了吗?

标签: hyperledger-fabric grpc


【解决方案1】:

鉴于您使用的是 Java SDK,您需要设置 grpc.NettyChannelBuilderOption.maxInboundMessageSize 属性。我不确定这是否适用于连接配置文件,但您绝对可以在您的实际代码中将其添加到 peer 或 orderer 的属性中:

peerProperties.put("grpc.NettyChannelBuilderOption.maxInboundMessageSize", 90000000);

设置以字节为单位。 Fabric 支持的最大消息大小约为 100MB。

【讨论】:

  • 我没有使用 Java SDK 来设置网络,一切都是通过 shell 脚本(如他们的示例)和链代码的 go 语言完成的。 JAVA SDK 仅用于 crud 操作。我也编辑了我的帖子,你能告诉我我做错了什么吗?
  • 对 ... 我上面的建议是在使用 SDK 时将属性添加到客户端的对等属性中。您加载配置文件,然后手动添加属性。我不确定为什么您的连接配置文件不起作用
  • 您有任何示例如何实现这一点吗?因为我只将 SDK 用于 CRUD 功能。希望你能帮我解决这个问题。