Corda Spring 引导启动跟踪流未知常量池标记

Corda Spring Boot start tracked flow Unknown constant pool tag

如果您连接 spring 启动应用程序以通过 rpc 连接到一方(在本例中为 IOU 示例 A 方),您是否无法使用跟踪流的结果,因为一些同步问题?

  1. 我刚刚复制了为甲方制作的IOU cordapp的jar文件,用于流依赖。这可能是一个错误。

  2. 我在想在生产环境中我可能不想在请求期间阻塞,但我想我会试一试。

代码如下:

val signedTx = rpcOps.startTrackedFlow(ExampleFlow::Initiator, iouValue, otherParty).returnValue.getOrThrow()
ResponseEntity.status(CREATED).body("Transaction id ${signedTx.id} committed to ledger.\n")

目前交易从上面的第一行代码开始进行得很好,但我在下一行得到了一个堆栈跟踪,其中包括从 signedTx 中获取 id。

java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Unknown constant pool tag [I@576ae80a in classfile module-info.class (element size unknown, cannot continue reading class. Please report this on the FastClasspathScanner GitHub page.
    at io.github.lukehutch.fastclasspathscanner.FastClasspathScanner.scan(FastClasspathScanner.java:1408) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at io.github.lukehutch.fastclasspathscanner.FastClasspathScanner.scan(FastClasspathScanner.java:1439) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at io.github.lukehutch.fastclasspathscanner.FastClasspathScanner.scan(FastClasspathScanner.java:1462) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme$Companion$customSerializers.invoke(AMQPSerializationScheme.kt:41) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme$Companion$customSerializers.invoke(AMQPSerializationScheme.kt:35) ~[corda-node-api-corda-3.0.jar:na]
    at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131) ~[kotlin-stdlib-1.2.21.jar:1.2.21-release-88 (1.2.21)]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme$Companion.getCustomSerializers(AMQPSerializationScheme.kt) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme$Companion.access$getCustomSerializers$p(AMQPSerializationScheme.kt:35) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.registerCustomSerializers(AMQPSerializationScheme.kt:87) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.getSerializerFactory(AMQPSerializationScheme.kt:118) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:122) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize.invoke(SerializationScheme.kt:111) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:66) ~[corda-core-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize.invoke(SerializationScheme.kt:111) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl$deserialize.invoke(SerializationScheme.kt:86) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:80) ~[corda-core-corda-3.0.jar:na]
    at net.corda.nodeapi.internal.serialization.SerializationFactoryImpl.deserialize(SerializationScheme.kt:111) ~[corda-node-api-corda-3.0.jar:na]
    at net.corda.core.transactions.SignedTransaction.getCoreTransaction(SignedTransaction.kt:272) ~[corda-core-corda-3.0.jar:na]
    at net.corda.core.transactions.SignedTransaction.getId(SignedTransaction.kt:55) ~[corda-core-corda-3.0.jar:na]

Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: Unknown constant pool tag [I@5c774621 in classfile module-info.class (element size unknown, cannot continue reading class. Please report this on the FastClasspathScanner GitHub page.
    at io.github.lukehutch.fastclasspathscanner.utils.InterruptionChecker.executionException(InterruptionChecker.java:74) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at io.github.lukehutch.fastclasspathscanner.utils.WorkQueue.runWorkLoop(WorkQueue.java:142) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at io.github.lukehutch.fastclasspathscanner.utils.WorkQueue.call(WorkQueue.java:99) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at io.github.lukehutch.fastclasspathscanner.utils.WorkQueue.call(WorkQueue.java:96) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_144]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_144]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_144]
    ... 1 common frames omitted
    Suppressed: java.lang.RuntimeException: Called close() before completing all work units
        at io.github.lukehutch.fastclasspathscanner.utils.WorkQueue.close(WorkQueue.java:194) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
        at io.github.lukehutch.fastclasspathscanner.scanner.Scanner.call(Scanner.java:384) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
        at io.github.lukehutch.fastclasspathscanner.scanner.Scanner.call(Scanner.java:59) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
        ... 4 common frames omitted
    Suppressed: java.lang.RuntimeException: Unreleased instances: 3
        at io.github.lukehutch.fastclasspathscanner.utils.Recycler.close(Recycler.java:69) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
        at io.github.lukehutch.fastclasspathscanner.scanner.Scanner.call(Scanner.java:384) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
        at io.github.lukehutch.fastclasspathscanner.scanner.Scanner.call(Scanner.java:59) ~[fast-classpath-scanner-2.0.21.jar:2.0.21]
        ... 4 common frames omitted

这是 Corda 3.1 中修复的错误。

这是由于 Corda 3.0 使用的 FastClasspathScanner 库版本中的错误。