首页 > 解决方案 > 无法使用 Fabric SDK Java 更新通道配置:字段“common.ConfigUpdate.channel_id”包含无效的 UTF-8

问题描述

网络设置:

网络设置有 1 个排序者 + 2 个组织,每个组织有 2 个对等点(2 * 2 = 4 个对等点)。

我认为网络、加密材料、通道配置事务都没有问题,因为我使用 Fabric SDK Go 完成了类似的事情而没有遇到此类问题。

我做了什么:

错误发生在我创建通道“mychannel”,将客户端组织的两个对等点添加到通道,使用 Fabric SDK Java 初始化通道,然后尝试更新通道之后。

在我尝试调用channel.updateChannelConfiguration()以应用配置 tx 文件之前Org1MSPanchors.tx,我设法从两个组织的管理员那里获得了签名。

关键行(项目是用 Kotlin 编写的,以下是 Java 等价物):

var updateConfig = new UpdateChannelConfiguration(new File("path/to/file.tx"));
// The signatures have been created from the admins of the 2 orgs.
channel.updateChannelConfiguration(updateConfig, signatures);

日志:

调用后,程序崩溃并显示以下信息。

Caused by: org.hyperledger.fabric.sdk.exception.TransactionException: Channel mychannel, send transaction failed on orderer OrdererClient{id: 4, channel: mychannel, name: orderer.***.com, url: grpcs://localhost:7050}. Reason: Channel mychannel orderer orderer.***.com status returned failure code 400 (BAD_REQUEST) during orderer next
    at org.hyperledger.fabric.sdk.OrdererClient.sendTransaction(OrdererClient.java:240) ~[fabric-sdk-java-1.4.13.jar:na]
    at org.hyperledger.fabric.sdk.Orderer.sendTransaction(Orderer.java:164) ~[fabric-sdk-java-1.4.13.jar:na]
    at org.hyperledger.fabric.sdk.Channel.sendUpdateChannel(Channel.java:549) ~[fabric-sdk-java-1.4.13.jar:na]
    at org.hyperledger.fabric.sdk.Channel.updateChannelConfiguration(Channel.java:455) ~[fabric-sdk-java-1.4.13.jar:na]
    at org.hyperledger.fabric.sdk.Channel.updateChannelConfiguration(Channel.java:412) ~[fabric-sdk-java-1.4.13.jar:na]
    at com.***.util.SDKUtil$Companion.updateChannel(SDKUtil.kt:68) ~[main/:na]
    at com.***.***Application.configureChannel(FjstApplication.kt:76) ~[main/:na]
    at com.***.***Application.access$configureChannel(FjstApplication.kt:19) ~[main/:na]
    at com.***.***Application$commandLineRunner$2.run(FjstApplication.kt:54) ~[main/:na]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:804) [spring-boot-2.4.0.jar:2.4.0]
    ... 5 common frames omitted
Caused by: org.hyperledger.fabric.sdk.exception.TransactionException: Channel mychannel orderer orderer.***.com status returned failure code 400 (BAD_REQUEST) during orderer next
    at org.hyperledger.fabric.sdk.OrdererClient$1.onNext(OrdererClient.java:186) ~[fabric-sdk-java-1.4.13.jar:na]

和码头工人日志orderer.***.com

2020-12-14 09:14:48.443 UTC [orderer.commmon.multichannel] newChain -> INFO 00b Created and starting new chain mychannel
2020-12-14 09:14:48.451 UTC [comm.grpc.server] 1 -> INFO 00c streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=192.168.128.1:35988 grpc.code=OK grpc.call_duration=60.307408ms
2020-12-14 09:15:01.201 UTC [comm.grpc.server] 1 -> INFO 00d streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Deliver grpc.peer_address=192.168.128.1:35988 grpc.code=OK grpc.call_duration=1.770753ms
2020-12-14 09:15:01.208 UTC [orderer.common.broadcast] ProcessMessage -> WARN 00e [channel: mychannel] Rejecting broadcast of config message from 192.168.128.1:35988 because of error: error applying config update to existing channel 'mychannel': error authorizing update: proto: field "common.ConfigUpdate.channel_id" contains invalid UTF-8
2020-12-14 09:15:01.208 UTC [comm.grpc.server] 1 -> INFO 00f streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=192.168.128.1:35988 grpc.code=OK grpc.call_duration=349.969µs

配置和网络文件:

https://1drv.ms/u/s!Aj_rPvkyS8y8gtsXEaKBXD1riM12CQ?e=jkMeYn

请帮忙:

如果解决方案不明显,请告诉我可能的原因是什么?

谢谢!

标签: hyperledger-fabrichyperledgerhyperledger-fabric-sdk-java

解决方案


推荐阅读