We're updating the issue view to help you get more done. 

Cannot transfer cash using the 3.3 O/S Finance Cordapp from a 4.0 O/S node to a 3.2 Ent node

Description

Steps to recreate:

  • Clone https://github.com/corda/cordapp-example

  • Checkout branch release-V3

  • From the root directory run gradlew :kotlin-source:deployNodes

  • Copy corda.jar and corda-webserver.jar from the O/S 4.0-RC01 artifacts into the kotlin-source/build/nodes/PartyB directory. node.conf will need udpating to:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 devMode=true myLegalName="O=PartyB,L=New York,C=US" p2pAddress="localhost:10010" rpcSettings { address="localhost:10011" adminAddress="localhost:10051" } security { authService { dataSource { type=INMEMORY users=[ { password=test permissions=[ ALL ] user=user1 } ] } } }
  • Copy corda.jar and corda-webserver.jar from the ENT 3.2 distribution into the kotlin-source/build/nodes/PartyC. Again, update node.conf to:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 devMode=true myLegalName="O=PartyC,L=Paris,C=FR" p2pAddress="localhost:10013" rpcSettings { address="localhost:10014" adminAddress="localhost:10054" } security { authService { dataSource { type=INMEMORY users=[ { password=test permissions=[ ALL ] user=user1 } ] } } }
  • Run /kotlin-source/build/nodes/runnodes

  • In PartyB (O/S 4), self issue some cash by running: flow start CashIssueFlow amount: "10 GBP", issuerBankPartyRef: "1234" , notary: "O=Notary,L=London,C=GB"

  • In PartyB (O/S 4.0), make a payment to PartyC (ENT 3.2) by running: flow start CashPaymentFlow amount: "10 GBP", recipient: PartyC, anonymous: false

Node shows:

1 2 3 4 5 6 7 8 9 Starting Generating anonymous identities Generating transaction Signing transaction Finalising transaction Requesting signature by notary service Requesting signature by Notary service Validating response from Notary service Broadcasting transaction to participants

And then hangs.

The logs for PartyC (the ENT 3.2 node) show a serialisation error:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 [INFO ] 2019-01-16T14:15:21,766Z [flow-worker] statemachine.StaffedFlowHospital.consultStaff - Flow [33d4beed-bfba-4beb-93bf-053c2d1b9583] has error [0] {fiber-id=10000001, flow-id=33d4beed-bfba-4beb-93bf-053c2d1b9583, invocation_id=d72af241-108b-482a-a28d-239eb6791156, invocation_timestamp=2019-01-16T14:15:20.949Z, session_id=d72af241-108b-482a-a28d-239eb6791156, session_timestamp=2019-01-16T14:15:20.949Z, thread-id=262} java.io.NotSerializableException: Unexpected throwable: net.corda.core.transactions.WireTransaction -> net.corda.core.transactions.WireTransaction -> Malformed transaction, OUTPUTS_GROUP at index 0 cannot be deserialised at net.corda.serialization.internal.amqp.DeserializationInput.des(DeserializationInput.kt:95) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.DeserializationInput.deserialize(DeserializationInput.kt:108) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.AbstractAMQPSerializationScheme.deserialize(AMQPSerializationScheme.kt:190) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.SerializationFactoryImpl$deserialize$1$1.invoke(SerializationScheme.kt:136) ~[corda-serialization-3.2.jar:?] at net.corda.core.serialization.SerializationFactory.withCurrentContext(SerializationAPI.kt:77) ~[corda-core-3.2.jar:?] at net.corda.serialization.internal.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:136) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.SerializationFactoryImpl$deserialize$1.invoke(SerializationScheme.kt:106) ~[corda-serialization-3.2.jar:?] at net.corda.core.serialization.SerializationFactory.asCurrent(SerializationAPI.kt:91) ~[corda-core-3.2.jar:?] at net.corda.serialization.internal.SerializationFactoryImpl.deserialize(SerializationScheme.kt:136) ~[corda-serialization-3.2.jar:?] at net.corda.core.transactions.SignedTransaction.getCoreTransaction(SignedTransaction.kt:283) ~[corda-core-3.2.jar:?] at net.corda.core.transactions.SignedTransaction.getId(SignedTransaction.kt:65) ~[corda-core-3.2.jar:?] at net.corda.core.internal.InternalUtils.pushToLoggingContext(InternalUtils.kt:509) ~[corda-core-3.2.jar:?] at net.corda.core.flows.ReceiveTransactionFlow.call(ReceiveTransactionFlow.kt:52) ~[corda-core-3.2.jar:?] at net.corda.core.flows.ReceiveTransactionFlow.call(ReceiveTransactionFlow.kt:36) ~[corda-core-3.2.jar:?] at net.corda.node.services.statemachine.FlowStateMachineImpl.subFlow(FlowStateMachineImpl.kt:281) [corda-node-3.2.jar:?] at net.corda.core.flows.FlowLogic.subFlow(FlowLogic.kt:312) ~[corda-core-3.2.jar:?] at net.corda.node.services.FinalityHandler.call(CoreFlowHandlers.kt:31) ~[corda-node-3.2.jar:?] at net.corda.node.services.FinalityHandler.call(CoreFlowHandlers.kt:28) ~[corda-node-3.2.jar:?] at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:225) [corda-node-3.2.jar:?] at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:51) [corda-node-3.2.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:1149) [?:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.22.Final.jar:4.1.22.Final] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181] Caused by: java.lang.Exception: net.corda.core.transactions.WireTransaction -> net.corda.core.transactions.WireTransaction -> Malformed transaction, OUTPUTS_GROUP at index 0 cannot be deserialised at net.corda.core.transactions.TraversableTransaction.deserialiseComponentGroup(MerkleTransaction.kt:80) ~[corda-core-3.2.jar:?] at net.corda.core.transactions.TraversableTransaction.<init>(MerkleTransaction.kt:35) ~[corda-core-3.2.jar:?] at net.corda.core.transactions.WireTransaction.<init>(WireTransaction.kt:54) ~[corda-core-3.2.jar:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_181] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_181] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_181] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_181] at net.corda.serialization.internal.amqp.ObjectSerializer.newInstanceUnwrapped(ObjectSerializer.kt:173) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.ObjectSerializer.construct(ObjectSerializer.kt:167) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.ObjectSerializer.readObjectBuildViaConstructor(ObjectSerializer.kt:119) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.ObjectSerializer.readObject(ObjectSerializer.kt:103) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.DeserializationInput.readObject$serialization(DeserializationInput.kt:165) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.DeserializationInput.readObjectOrNull$serialization(DeserializationInput.kt:136) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.DeserializationInput$deserialize$1.invoke(DeserializationInput.kt:113) ~[corda-serialization-3.2.jar:?] at net.corda.serialization.internal.amqp.DeserializationInput.des(DeserializationInput.kt:91) ~[corda-serialization-3.2.jar:?] ... 27 more

(full log attached}

Status

Assignee

Shams Asari

Reporter

Anthony Keenan

Labels

None

Affected OS

None

Severity

High

Target Version/s

None

Feature Team

Corda Core

Affects versions

Corda 4 RC01

Priority

High