Corda显式合同升级NosuchelementException:列表为空



我正在尝试升级Corda合同。目前,我们有一个Uber罐有州,流动和合同。我们通过利用升级合同使用lebacyconstraint接口在单独的罐子中打破Uber Jars。

在我们的网络中,有一个观察者节点,它跟踪网络中其他节点之间发生的所有交易。因此,在这种情况下,我们运行了网络中所有节点的流量,然后运行观察者节点中的启动流。授权流在所有节点中成功运行而没有任何错误,但启动流有两个问题。

  1. 某些流量失败。我们正在遇到错误的多重实例。下面提到堆栈跟踪
  2. 一些流动仍在等待中。在Jolokia监控中,我们获得了类似的统计数据,其中有些仍处于飞行状态。在Corda SSH Shell中,我们在运行流量观察命令后正在进行待处理的交易。我们试图重新启动系统,但是在观察者节点中,问题仍然持续。

应该下一步或建议升级合同的方法。我在Ubuntu 16.04上使用Corda v3.3,Cordite网络地图,并从GitHub存储库中获取参考来升级合同(https://github.com/amolpednekar/amolpednekar/contract-state-state-state-upgrades/blob/blob/master/master/master/cord/cord/src/src/src/main/main/main/kotlin/com/upgrade/client.kt(。

stacktrace:

[WARN ] 2019-05-22T22:16:31,568Z [Node thread-1] flow.[fa8a213f-8de7-4cd8-8d41-8493bbc9cecf].run - Terminated by unexpected exception {}
java.util.NoSuchElementException: List is empty.
    at kotlin.collections.CollectionsKt___CollectionsKt.single(_Collections.kt:472) ~[kotlin-stdlib-1.1.60.jar:1.1.60-release-55 (1.1.60)]
    at kotlin.collections.CollectionsKt___CollectionsKt.single(_Collections.kt:454) ~[kotlin-stdlib-1.1.60.jar:1.1.60-release-55 (1.1.60)]
    at net.corda.core.flows.ContractUpgradeFlow$Initiate.assembleTx(ContractUpgradeFlow.kt:77) ~[corda-core-3.3-corda.jar:?]
    at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:64) ~[corda-core-3.3-corda.jar:?]
    at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:50) ~[corda-core-3.3-corda.jar:?]
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.3-corda.jar:?]
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.3-corda.jar:?]
    at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.9-jdk8.jar:0.7.9]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_201]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_201]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_201]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_201]
    at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.3-corda.jar:?]
[WARN ] 2019-05-22T22:16:31,574Z [Node thread-1] flow.[5856148a-d233-43c4-ac20-396b9a91f6c0].run - Terminated by unexpected exception {}

编辑:捕获的其他一些错误:

[WARN ] 2019-06-03T16:36:22,357Z [Node thread-1] flow.[2aec6ee2-2e14-43f5-81ce-b301c4876e0a].run - Terminated by unexpected exception {}
java.lang.ClassCastException: io.corp.contract.DefaultContract cannot be cast to net.corda.core.contracts.UpgradedContract
        at net.corda.core.flows.ContractUpgradeFlow$Authorise.call(ContractUpgradeFlow.kt:38) ~[corda-core-3.3-corda.jar:?]
        at net.corda.core.flows.ContractUpgradeFlow$Authorise.call(ContractUpgradeFlow.kt:31) ~[corda-core-3.3-corda.jar:?]
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96) [corda-node-3.3-corda.jar:?]
        at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44) [corda-node-3.3-corda.jar:?]
        at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092) [quasar-core-0.7.9-jdk8.jar:0.7.9]
        at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788) [quasar-core-0.7.9-jdk8.jar:0.7.9]
        at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.9-jdk8.jar:0.7.9]
        at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.9-jdk8.jar:0.7.9]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_201]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_201]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_201]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:1.8.0_201]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_201]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_201]
        at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:62) [corda-node-3.3-corda.jar:?]

这也发现了我们的合同升级

[WARN ] 2019-06-03T17:44:26,859Z [Messaging DLJKqkjV9pKTqG5nKbQQ3o5B1hPj1zjrYxDYpbhPENXdR] messaging.P2PMessagingClient.sendWithRetry - Reached the maximum number of retries (3) for message ClientMessageImpl[messageID=0, durable=true, address=internal.peers.DL8itTRrD1LvKjd5sQ9DwX59KmZ42PTa964nJPfL6jf1VC,userID=null,properties=TypedProperties[platform-version=3,corda-vendor=Corda Open Source,release-version=3.3-corda,platform-topic=platform.session,_AMQ_DUPL_ID=23190134-6514-4165-8277-0e3df48e2678,corda_p2p_message_type=session_init]] redelivery to internal.peers.DL8itTRrD1LvKjd5sQ9DwX59KmZ42PTa964nJPfL6jf1VC {}
[WARN ] 2019-06-03T17:44:26,941Z [Messaging DLJKqkjV9pKTqG5nKbQQ3o5B1hPj1zjrYxDYpbhPENXdR] messaging.P2PMessagingClient.sendWithRetry - Reached the maximum number of retries (3) for message ClientMessageImpl[messageID=0, durable=true, address=internal.peers.DL8itTRrD1LvKjd5sQ9DwX59KmZ42PTa964nJPfL6jf1VC,userID=null,properties=TypedProperties[platform-version=3,corda-vendor=Corda Open Source,release-version=3.3-corda,platform-topic=platform.session,_AMQ_DUPL_ID=2e2cde97-1e3d-4ce9-b7af-01ab61a88114,corda_p2p_message_type=session_init]] redelivery to internal.peers.DL8itTRrD1LvKjd5sQ9DwX59KmZ42PTa964nJPfL6jf1VC {}

从stacktrace中,看来发起者不是原始状态的参与者。

最新更新