Uploaded image for project: 'Corda'
  1. CORDA-2705

Flow failing due to "Flow sessions were not provided" for its own identity

    Details

    • Type: Bug
    • Status: Done (View workflow)
    • Priority: Medium
    • Resolution: Done
    • Affects versions: Corda 4
    • Fix versions: Corda 4.1
    • Components: None
    • Labels:
      None
    • Severity:
      Medium
    • Target Version/s:
    • Feature Team:
      Corda Core
    • Sprint:

      Description

      This test uses the Daywatch network map - in order to connect to daywatch you will need a machine with a public IP address (i.e. not one within the office obscured by NAT)

      This happens with:
      Corda 4, with the corda-finance-workflows and corda-finance-contracts from v4.

      I also tested it (but the issue doesn't occur with)
      Corda Ent 4.0-RC04, with the corda-finance-workflows ENT 4.0-RC04 and corda-finance-contracts OS-4.0

      Unzip the attached lost-identity-repro.zip
      Edit the node.conf in PartyA to give it a unique name (PartyA-xxxxxxxx) and change the P2P address to your public IP address
      Edit the node.conf in PartyB to give it a unique name (PartyB-xxxxxxxx) and change the P2P address to your public IP address

      Copy corda.jar to the directory and the relevant versions of corda-finance-contracts.jar corda-finance-workflows.jar to the cordapps dir for both PartyA and PartyB.

      Navigate to the PartyA directory and run
      java -jar corda.jar initial-registration --network-root-truststore=..\daywatch-network-root-truststore.jks --network-root-truststore-password=password --log-to-console

      Navigate to the PartyB directory and run
      java -jar corda.jar initial-registration --network-root-truststore=..\daywatch-network-root-truststore.jks --network-root-truststore-password=password --log-to-console

      Navigate to PartyA and run
      java -jar corda.jar

      Navigate to PartyB and run
      java -jar corda.jar

      On PartyA run
      flow start CashIssueFlow amount: "100 GBP", issuerBankPartyRef: "1234" , notary: "CN=Notary - East US, O=R3 HoldCo LLC, L=New York, C=US"
      flow start CashPaymentFlow amount: "10 GBP", recipient: "C=GB,L=London,O=PartyB-xxxxxx", anonymous: true, notary: "CN=Notary - East US, O=R3 HoldCo LLC, L=New York, C=US"

      On PartyB run:
      flow start CashPaymentFlow amount: "5 GBP", recipient: "C=GB,L=London,O=PartyA-xxxxxx", anonymous: true, notary: "CN=Notary - East US, O=R3 HoldCo LLC, L=New York, C=US"

      PartyB should fail to transfer the cash with the error:

      [INFO ] 2019-03-04T11:26:45,419Z [Node thread-1] corda.flow.run - Flow raised an error... sending it to flow hospital {actor_id=corda, actor_owning_identity=O=PartyB-327aa32e-08f8-4cf3-a566-0ce6bbdcb994, L=London, C=GB, actor_store_id=NODE_CONFIG, fiber-id=10000002, flow-id=c3d1cc9f-221e-401d-85f3-b021edf820ff, invocation_id=82c45912-1320-4c2c-b651-47953af8b12c, invocation_timestamp=2019-03-04T11:26:43.462Z, origin=corda, session_id=a80d5e2c-1339-440e-95ba-ea92d148d030, session_timestamp=2019-03-04T11:26:42.925Z, thread-id=220, tx_id=909CA79E619773BC50EF790CAA5E1C3500F9F1841E6305BE09D3F7C667DFCD8B}
      java.lang.IllegalArgumentException: Flow sessions were not provided for the following transaction participants: [O=PartyB-327aa32e-08f8-4cf3-a566-0ce6bbdcb994, L=London, C=GB]
      	at net.corda.core.flows.FinalityFlow.call(FinalityFlow.kt:143) ~[corda-core-4.0.jar:?]
      	at net.corda.core.flows.FinalityFlow.call(FinalityFlow.kt:39) ~[corda-core-4.0.jar:?]
      	at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:290) ~[corda-node-4.0.jar:?]
      	at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:314) ~[corda-core-4.0.jar:?]
      	at net.corda.finance.flows.AbstractCashFlow.finaliseTx(AbstractCashFlow.kt:28) ~[?:?]
      	at net.corda.finance.flows.CashPaymentFlow.call(CashPaymentFlow.kt:84) ~[?:?]
      	at net.corda.finance.flows.CashPaymentFlow.call(CashPaymentFlow.kt:32) ~[?:?]
      	at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:228) ~[corda-node-4.0.jar:?]
      	at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:45) ~[corda-node-4.0.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_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:63) ~[corda-node-4.0.jar:?]
      

        Attachments

          Activity

            People

            • Assignee:
              dimos.raptis Dimos Raptis
              Reporter:
              Anthony.Keenan Anthony Keenan
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: