Квазарное исключение при получении информации об идентификаторе узла в тестах Corda Flow - PullRequest
0 голосов
/ 09 января 2020

У меня есть тесты потока, которые выполняют logi потока c, чтобы сгенерировать новую партию и сертификаты, используя (тест) сервис управления ключами. При настройке я создаю фиктивный сетевой экземпляр вместе с несколькими StartedMockNode экземплярами. Наш проект написан на Kotlin 1.1.60, использует Corda-3.3 с открытым исходным кодом (ОС), работает на JDK 1.8_u192. При запуске тестов в IntelliJ Idea 2019.3 я получаю следующее исключение из библиотеки квазаров:

    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2217) ~[guava-21.0.jar:?]
    at com.google.common.cache.LocalCache.get(LocalCache.java:4154) ~[guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:5060) ~[guava-21.0.jar:?]
    at net.corda.node.utilities.NonInvalidatingCache.get(NonInvalidatingCache.kt) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.utilities.AppendOnlyPersistentMapBase.set(AppendOnlyPersistentMap.kt:53) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.utilities.AppendOnlyPersistentMapBase.addWithDuplicatesAllowed(AppendOnlyPersistentMap.kt:100) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.utilities.AppendOnlyPersistentMapBase.addWithDuplicatesAllowed$default(AppendOnlyPersistentMap.kt:99) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.services.identity.PersistentIdentityService.verifyAndRegisterIdentity(PersistentIdentityService.kt:139) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.services.api.IdentityServiceInternal$DefaultImpls.justVerifyAndRegisterIdentity(IdentityServiceInternal.kt:9) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.services.identity.PersistentIdentityService.justVerifyAndRegisterIdentity(PersistentIdentityService.kt:31) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.services.keys.KMSUtilsKt.freshCertificate(KMSUtils.kt:50) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.services.keys.E2ETestKeyManagementService.freshKeyAndCert(E2ETestKeyManagementService.kt:56) ~[corda-node-3.3-corda.jar:?]
    ...
Caused by: java.lang.IllegalStateException: Was expecting to find transaction set on current strand: Fiber@10000001:[9b1b68cc-578e-479d-8584-6376c1f3bb89][task: co.paralleluniverse.fibers.RunnableFiberTask@496179b9(Fiber@10000001), target: null, scheduler: net.corda.node.services.statemachine.StateMachineManagerImpl$FiberScheduler@7d174b11]
    at net.corda.nodeapi.internal.persistence.DatabaseTransactionKt.getContextTransaction(DatabaseTransaction.kt:14) ~[corda-node-api-3.3-corda.jar:?]
    at net.corda.nodeapi.internal.persistence.DatabaseTransactionKt.currentDBSession(DatabaseTransaction.kt:9) ~[corda-node-api-3.3-corda.jar:?]
    at net.corda.node.utilities.AppendOnlyPersistentMapBase$addWithDuplicatesAllowed$1.invoke(AppendOnlyPersistentMap.kt:101) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.utilities.AppendOnlyPersistentMapBase$set$existingInCache$1.call(AppendOnlyPersistentMap.kt:58) ~[corda-node-3.3-corda.jar:?]
    at net.corda.node.utilities.AppendOnlyPersistentMapBase$set$existingInCache$1.call(AppendOnlyPersistentMap.kt:15) ~[corda-node-3.3-corda.jar:?]
    at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:5065) ~[guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) ~[guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) ~[guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) ~[guava-21.0.jar:?]
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) ~[guava-21.0.jar:?]
    ... 27 more

В моем коде не было значительных отклонений в потоке или тестовых логах c от рекомендованных подходов в корде документация. Есть идеи как это исправить?

1 Ответ

1 голос
/ 09 января 2020

Переключение настроек IntelliJ для решения этой проблемы. При обновлении настроек теста в «Предпочтения» -> «Построить, выполнить, развернуть» -> «Gradle» -> «Построить и запустить с помощью» до «Gradle» вместо «IntelliJ Idea», и чуть ниже «Выполнить тесты с использованием «Gradle» вместо «IntelliJ Idea», тесты потока прошли успешно, как и ожидалось. Никаких других изменений не требуется.

IntelliJ Idea Screenshot

...