在重新部署的 Corda 企业应用程序上发布更新状态
Issue updating state on re-deployed Corda Enterprise App
我在更改一些分类帐代码并尝试更新由旧部署创建的状态后重新部署 Corda Enterprise 应用程序时遇到了问题。最初我遇到了由以下 TransactionBuilder 约束引起的 Notary 问题:
require(notary == this.notary) { "Input state requires notary \"$notary\" which does not match the transaction notary \"${this.notary}\"."
这已通过使用 NotaryChangeFlow 解决。下面是我的用法示例:
val inputNotary = inputState.state.notary
if(inputNotary != newNotary) {
subFlow(NotaryChangeFlow(inputState, newNotary))
}
但是,我现在收到错误消息:
java.lang.IllegalArgumentException: Don't know about O=Party, L=Sydney, C=AU
at net.corda.node.services.statemachine.FlowMessagingImpl.sendSessionMessage(FlowMessaging.kt:65) ~[corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.ActionExecutorImpl.executeSendInitial(ActionExecutorImpl.kt:177) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.ActionExecutorImpl.executeAction(ActionExecutorImpl.kt:75) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.MetricActionInterceptor.executeAction(MetricInterceptor.kt:31) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.TransitionExecutorImpl.executeTransition(TransitionExecutorImpl.kt:51) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.HospitalisingInterceptor.executeTransition(HospitalisingInterceptor.kt:54) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.DumpHistoryOnErrorInterceptor.executeTransition(DumpHistoryOnErrorInterceptor.kt:46) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.MetricInterceptor.executeTransition(MetricInterceptor.kt:23) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.FiberDeserializationCheckingInterceptor.executeTransition(FiberDeserializationCheckingInterceptor.kt:50) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEvent(FlowStateMachineImpl.kt:133) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEventsUntilFlowIsResumed(FlowStateMachineImpl.kt:162) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.suspend(FlowStateMachineImpl.kt:396) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowSessionImpl.sendAndReceive(FlowSessionImpl.kt:64) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowSessionImpl.sendAndReceive(FlowSessionImpl.kt:71) [corda-node-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.sendPayloadAndReceiveDataRequest(SendTransactionFlow.kt:81) [corda-core-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.call(SendTransactionFlow.kt:59) [corda-core-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.call(SendTransactionFlow.kt:42) [corda-core-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.getParticipantSignature(AbstractStateReplacementFlow.kt:118) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.collectSignatures(AbstractStateReplacementFlow.kt:102) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:78) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:60) [corda-core-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) [corda-core-3.1.jar:?]
at com.administration.ledger.flow.MemberUpdateFlow$Initiator.call(MemberFlow.kt:104) [administration-ledger-0.1.jar:0.1]
at com.administration.ledger.flow.MemberUpdateFlow$Initiator.call(MemberFlow.kt:80) [administration-ledger-0.1.jar:0.1]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:225) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:51) [corda-node-3.1.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.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.22.Final.jar:4.1.22.Final]
我想知道是否有人以前见过这个错误/知道是什么导致了它。这似乎与引用原始 O=Party、L=Sydney、C=AU Party 的交易有关,这是初始状态创建的参与者。此流程在 Corda OS 中运行良好,但在迁移到企业版后出现问题。
您在上面的评论中说:
Just confirming the ./gradlew deployNodes command is the correct one
to re-deploy nodes after changes are made
这是不正确的。 Re-运行 deployNodes
将使用一组新证书创建一组新节点。这就是为什么您会收到 java.lang.IllegalArgumentException: Don't know about O=Party, L=Sydney, C=AU
.
形式的异常的原因
您应该使用以下流程更新 CorDapp:
我在更改一些分类帐代码并尝试更新由旧部署创建的状态后重新部署 Corda Enterprise 应用程序时遇到了问题。最初我遇到了由以下 TransactionBuilder 约束引起的 Notary 问题:
require(notary == this.notary) { "Input state requires notary \"$notary\" which does not match the transaction notary \"${this.notary}\"."
这已通过使用 NotaryChangeFlow 解决。下面是我的用法示例:
val inputNotary = inputState.state.notary
if(inputNotary != newNotary) {
subFlow(NotaryChangeFlow(inputState, newNotary))
}
但是,我现在收到错误消息:
java.lang.IllegalArgumentException: Don't know about O=Party, L=Sydney, C=AU
at net.corda.node.services.statemachine.FlowMessagingImpl.sendSessionMessage(FlowMessaging.kt:65) ~[corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.ActionExecutorImpl.executeSendInitial(ActionExecutorImpl.kt:177) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.ActionExecutorImpl.executeAction(ActionExecutorImpl.kt:75) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.MetricActionInterceptor.executeAction(MetricInterceptor.kt:31) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.TransitionExecutorImpl.executeTransition(TransitionExecutorImpl.kt:51) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.HospitalisingInterceptor.executeTransition(HospitalisingInterceptor.kt:54) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.DumpHistoryOnErrorInterceptor.executeTransition(DumpHistoryOnErrorInterceptor.kt:46) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.MetricInterceptor.executeTransition(MetricInterceptor.kt:23) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.interceptors.FiberDeserializationCheckingInterceptor.executeTransition(FiberDeserializationCheckingInterceptor.kt:50) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEvent(FlowStateMachineImpl.kt:133) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.processEventsUntilFlowIsResumed(FlowStateMachineImpl.kt:162) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.suspend(FlowStateMachineImpl.kt:396) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowSessionImpl.sendAndReceive(FlowSessionImpl.kt:64) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowSessionImpl.sendAndReceive(FlowSessionImpl.kt:71) [corda-node-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.sendPayloadAndReceiveDataRequest(SendTransactionFlow.kt:81) [corda-core-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.call(SendTransactionFlow.kt:59) [corda-core-3.1.jar:?]
at net.corda.core.flows.DataVendingFlow.call(SendTransactionFlow.kt:42) [corda-core-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.getParticipantSignature(AbstractStateReplacementFlow.kt:118) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.collectSignatures(AbstractStateReplacementFlow.kt:102) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:78) [corda-core-3.1.jar:?]
at net.corda.core.flows.AbstractStateReplacementFlow$Instigator.call(AbstractStateReplacementFlow.kt:60) [corda-core-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.1.jar:?]
at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) [corda-core-3.1.jar:?]
at com.administration.ledger.flow.MemberUpdateFlow$Initiator.call(MemberFlow.kt:104) [administration-ledger-0.1.jar:0.1]
at com.administration.ledger.flow.MemberUpdateFlow$Initiator.call(MemberFlow.kt:80) [administration-ledger-0.1.jar:0.1]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:225) [corda-node-3.1.jar:?]
at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:51) [corda-node-3.1.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.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.22.Final.jar:4.1.22.Final]
我想知道是否有人以前见过这个错误/知道是什么导致了它。这似乎与引用原始 O=Party、L=Sydney、C=AU Party 的交易有关,这是初始状态创建的参与者。此流程在 Corda OS 中运行良好,但在迁移到企业版后出现问题。
您在上面的评论中说:
Just confirming the ./gradlew deployNodes command is the correct one to re-deploy nodes after changes are made
这是不正确的。 Re-运行 deployNodes
将使用一组新证书创建一组新节点。这就是为什么您会收到 java.lang.IllegalArgumentException: Don't know about O=Party, L=Sydney, C=AU
.
您应该使用以下流程更新 CorDapp: