Мы используем управляемую цепочку блоков IBM на основе матрицы 1.2 и пакет Go SDK @ 5e291d3a34f59beb9a8ae2bcbba388515648dc73.Когда мы пытаемся вызвать цепной код, который мы установили на одноранговых узлах, мы получаем ошибку «нет подключающихся одноранговых узлов»:
[fabsdk/fab] 2019/01/25 12:25:57 UTC - dispatcher.(*Dispatcher).Start.func1 -> DEBU Listening for events...
[fabsdk/fab] 2019/01/25 12:25:57 UTC - client.(*Client).connect -> DEBU ... got error in connection response: no peers to connect to
[fabsdk/common] 2019/01/25 12:25:57 UTC - retry.(*RetryableInvoker).Invoke -> DEBU Failed with err [error registering for TxStatus event: no peers to connect to] on attempt #1. Checking if retry is warranted...
[fabsdk/util] 2019/01/25 12:25:57 UTC - lazyref.(*Reference).setTimerRunning -> DEBU Timer started
[fabsdk/common] 2019/01/25 12:25:57 UTC - retry.(*RetryableInvoker).Invoke -> DEBU ... retry for err [error registering for TxStatus event: no peers to connect to] is NOT warranted after 1 attempt(s).
[fabsdk/util] 2019/01/25 12:25:57 UTC - lazyref.checkTimeStarted -> DEBU Starting timer
После добавления собственной дополнительной регистрации это выглядит как сбой, потому чтослужба обнаружения пиров (https://github.com/hyperledger/fabric-sdk-go/blob/master/pkg/client/common/discovery/dynamicdiscovery/chservice.go#L72) не возвращает ни одного пира в своем ответе. Кажется, что цели установлены правильно.
После вывода ответа GRPC мы получаем
(*discovery.Response)(0xc4205cd600)(
results: <
members: <
peers_by_org: <
key: "org1"
value: <>
>
>
>
)
Мы также самостоятельно настроили другую фабричную сеть с тем же цепным кодом, который работает правильно, и тот же дамп показывает это вместо этого (некоторые части были отредактированы):
(*discovery.Response)(0xc42045ed20)(
results: <
members: <
peers_by_org: <
key: "Org1MSP"
value: <
peers: <
state_info: <
payload:"<redacted>"
>
membership_info: <payload:"<redacted>" >
identity:"<redacted>"
>
peers: <
state_info: <
payload:"<redacted>"
signature:"<redacted>"
>
membership_info: <
payload:"<redacted>"
signature:"<redacted>"
>
identity:"<redacted>"
>
>
>
peers_by_org: <
key:"Org2MSP"
value: <
peers: <
state_info:<
payload:"<redacted>"
signature:"<redacted>"
>
membership_info: <
payload:"<redacted>"
>
identity:"<redacted>"
>
peers: <
state_info: <
payload:"<redacted>"
signature:"<redacted>"
>
membership_info: <
payload:"<redacted>"
signature:"<redacted>"
>
identity:"<redacted>"
>
>
>
>
>
)
Я не уверен, если проблеманаходится в конфигурации SDK или фабричной сети IBM Managed. Если это сеть IBM, то кажется, что узлы почему-то не знают, что они являются членами организации.
Кто-нибудь видел этоповедение раньше? Я искал в официальном ракетном чате Hyperledger ошибку «нет подключения к одноранговым узлам», и были получены некоторые результаты, но, похоже, они были вызваныдругие причины, такие как исключение одноранговых узлов SDK, не из-за ответа на запрос обнаружения.