Corda - запуск узлов в памяти на отдельных процессах не работает - PullRequest
0 голосов
/ 29 мая 2018

В моем проекте IntelliJ у меня есть два модуля - CorDapps.У меня также есть конфигурация прогона для каждого

  • Участник прогона A CorDapp
  • Участник прогона B CorDapp

Запуск любого из них запускает CorDapp на входе-память памяти

package com.demo.cordapp.participant_a

import net.corda.core.utilities.getOrThrow
import net.corda.testing.driver.DriverParameters
import net.corda.testing.driver.driver
import net.corda.testing.node.User

class Application {
    companion object {
        @JvmStatic
        fun main(args: Array<String>) {

            val parameters = DriverParameters(
                    isDebug = true,
                    waitForAllNodesToFinish = true,
                    extraCordappPackagesToScan = listOf("com.demo.shared.domain")
            )

            driver(parameters) {

                startNode(
                        providedName = PARTICIPANT_1_NAME,
                        rpcUsers = listOf(User("user1", "test", permissions = setOf("ALL")))
                ).getOrThrow()
            }
        }
    }
}

Если я сначала запускаю узел Участника А, он работает нормально, но я получаю ошибку для Участника Б, и наоборот.Ошибка выглядит следующим образом:

Исключение в потоке "main" net.corda.testing.node.internal.ListenProcessDeathException: процесс, который должен был прослушиваться на локальном хосте: 10000 завершился со статусом: 2

Я предполагаю, что существует конфликт портов, поскольку они оба пытаются использовать один и тот же p2p, rpc, веб-порты?

1 Ответ

0 голосов
/ 29 мая 2018

DriverParameters имеет аргумент portAllocation, который определяет, как порты назначаются узлам.

По умолчанию PortAllocation.Incremental(10000).Для одного из узлов вы должны установить это на что-то другое (например, PortAllocation.Incremental(20000)).

Если вы работаете в режиме отладки, вам также необходимо изменить debugPortAllocation.

...