Simple PBFT issue

168 views Asked by At

When I use same code with simple-validate and 3 nodes RAFT that are all ok. but I change to BFT. report below error. Actually I only use one un-consume make as input. but not sure why report below error. My code based on M14 version.

[WARN ] 2017-09-26T14:01:38,402Z [Node thread] flow.[9c5ea2df-43ef-4ff8-a954-c6b81ca2740f].run - Flow ended due to receiving exception net.corda.core.flows.NotaryException: Error response from Notary - One or more input states for transaction 0EFBAA4B3FAC43D15EB51CD6F7D352C62AC9C5438F56949C50484D1FE38E0A5A have been used in another transaction at net.corda.node.services.statemachine.FlowStateMachineImpl.erroredEnd(FlowStateMachineImpl.kt:373) ~[corda-node-0.14.0.jar:?] at net.corda.node.services.statemachine.FlowStateMachineImpl.waitForLedgerCommit(FlowStateMachineImpl.kt:212) ~[corda-node-0.14.0.jar:?] at net.corda.core.flows.FlowLogic.waitForLedgerCommit(FlowLogic.kt:232) ~[corda-core-0.14.0.jar:?] at com.legalcontract.flow.LegalContractFlow$Initiator.call(LegalContractFlow.kt:266) ~[kotlin-source-0.1.jar:?] at com.legalcontract.flow.LegalContractFlow$Initiator.call(LegalContractFlow.kt:44) ~[kotlin-source-0.1.jar:?] at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:101) [corda-node-0.14.0.jar:?] at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:33) [corda-node-0.14.0.jar:?] at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1067) [quasar-core-0.7.6-jdk8.jar:0.7.6] at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:767) [quasar-core-0.7.6-jdk8.jar:0.7.6] at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100) [quasar-core-0.7.6-jdk8.jar:0.7.6] at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91) [quasar-core-0.7.6-jdk8.jar:0.7.6] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source) [?:1.8.0_144] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_144] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_144] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_144] at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:69) [corda-node-0.14.0.jar:?]

1

There are 1 answers

0
Peter Li On

As Eye points out in his last comment, the issue was on the flows. You should always your flows for spending the same input more than once.

That will trigger an auto rejection from the notary, no matter what consensus you have in your notary cluster.