corda - Corda 单元测试因缺少 @Suspendable 而失败
问题描述
在 Corda Enterprise 4.1 上运行单元测试时,以前的工作流单元测试会崩溃,并出现以下异常:
java.lang.IllegalArgumentException: Transaction context is missing. This might happen if a suspendable method is not annotated with @Suspendable annotation.
at net.corda.node.services.statemachine.FlowStateMachineImpl.checkDbTransaction(FlowStateMachineImpl.kt:233) ~[corda-node-4.1.20190823.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEventImmediately(FlowStateMachineImpl.kt:224) ~[corda-node-4.1.20190823.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:294) ~[corda-node-4.1.20190823.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:45) ~[corda-node-4.1.20190823.jar:?]
at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) ~[quasar-core-0.7.10-jdk8.jar:0.7.10]
at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) ~[quasar-core-0.7.10-jdk8.jar:0.7.10]
at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) ~[quasar-core-0.7.10-jdk8.jar:0.7.10]
at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) ~[quasar-core-0.7.10-jdk8.jar:0.7.10]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_212]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_212]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_212]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_212]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_212]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_212]
at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:63) ~[corda-node-4.1.20190823.jar:?]
所有方法都正确包含@Suspendable
注释。是什么导致流量测试失败?
解决方案
确保您的 Cordapp 中包含正确版本的 Quasar。该版本已随 Corda 4 更改,请查看所需版本的 Quasar 文档:https ://docs.corda.r3.com/app-upgrade-notes-enterprise.html#re-compiling-for-release
对于 Corda 4.1,这将是ext.quasar_version = '0.7.11_r3'
.
推荐阅读
- java - 我如何为我的注销控制器进行模拟测试
- php - Yii2 检查电话号码是否以 234 开头
- node.js - 如何在更新mongodb中的现有行时防止nestjs中客户端不需要的对象属性
- ubuntu - 错误:未能找到 Lua 库。您可能需要配置 LUA_LIBDIR
- lambda - 为什么这个不可为空的 val 变成“可空的”?
- excel-2013 - 查找两个日期之间的特定日期系列
- algorithm - Prim的算法修改
- c# - 如何使用 Microsoft Graph C# SDK 查看结束日期和开始日期之间的 calendarView
- cmake - 通过 CMake FetchContent 设置 Qt5
- javascript - 使用 Angular 添加字形图标