Ошибка узла Corda MQ - сообщение о неверной конечной точке с использованием имени хоста p2pAddress - PullRequest
0 голосов
/ 31 мая 2018

Я использую Corda 3.1 и запускаю узлы на разных машинах.Если я указываю свой p2pAddress в качестве имени хоста, после успешного запуска я получаю сообщение об ошибке неверной конечной точки при попытке транзакций в примере IOU:

[ERROR] 2018-05-31T14:48:22,406Z [nioEventLoopGroup-2-1] O=Bank A,L=London,C=GB.write - Error in AMQP write processing {}
java.lang.IllegalArgumentException: Message for incorrect endpoint
    at net.corda.nodeapi.internal.protonwrapper.netty.AMQPChannelHandler.write(AMQPChannelHandler.kt:124) [corda-node-api-3.1-corda.jar:?]
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:738) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:730) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext.access$1900(AbstractChannelHandlerContext.java:38) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.write(AbstractChannelHandlerContext.java:1089) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext$WriteAndFlushTask.write(AbstractChannelHandlerContext.java:1136) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.channel.AbstractChannelHandlerContext$AbstractWriteTask.run(AbstractChannelHandlerContext.java:1078) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) [netty-all-4.1.9.Final.jar:4.1.9.Final]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171] 

Вот фрагмент моего узла.conf:

myLegalName : "O=Bank A,L=London,C=GB"
p2pAddress : "my-load-balancer-hostname.aws.com:10002"
rpcSettings = {
    address : "localhost:10003"
    adminAddress : "localhost:10004"
}
rpcUsers : [
    { username=user1, password=test, permissions=[ ALL ] }
]
devMode : true

Я могу решить эту проблему (и выполнить транзакции между узлами, как ожидается), используя IP-адрес компьютера в качестве адреса p2pAddress.Тем не менее, мой IP-адрес узла может измениться, поэтому я хотел бы использовать имя хоста?Это возможно?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Произошла дальнейшая отладка и обнаружена основная причина.

Ошибка была вызвана из AMQPChannelHandler.kt, строка 148, при выполнении проверки для назначения AMQ:

require(inetAddress == remoteAddress) { "Message for incorrect endpoint" }

Равенство InetSocketAddress.java возвращает false, поскольку IP-адрес изменяется.Свойства отладки:

inetAddress.hostString: party-corda-node-dev.aws.co.com,
inetAddress.address: party-corda-node-dev.aws.co.com/10.224.8.233     
inetAddress.port: 10002
inetAddress.isUnresolved: false

remoteAddress.hostString: liberty-corda-node-dev.aws.co.com
remoteAddress.address: liberty-corda-node-dev.aws.co.com/10.224.10.46
remoteAddress.port: 10002
remoteAddress.isUnresolved: false

Предлагаемое исправление для удаления этой проверки на соответствие разрешенным именам хостов.

Документировано в запросе на извлечение https://github.com/corda/corda/pull/3381

0 голосов
/ 05 июня 2018

Похоже, это связано с балансировщиком нагрузки AWS.

...