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

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

    Details

    • Type: Bug
    • Status: Closed Duplicate (View workflow)
    • Priority: Medium
    • Resolution: Duplicate
    • Affects Version/s: Corda 4 RC01
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Severity:
      High
    • Feature Team:
      Corda Core
    • Sprint:

      Description

      Steps to recreate:

      • Clone https://github.com/corda/cordapp-example
      • Checkout branch release-enterprise-V3
      • Modify it to use to use the correct artifactory repository
      • In the root build.gradle, update ext.corda_release_version = '3.2'
      • 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
      • Delete persistent.mv.db and persistence.trace.db from the kotlin-source/build/nodes/PartyB directory (there is no DB upgrade path from ENT 3.2 -> O/S 4)
      • Run /kotlin-source/build/nodes/runnodes
      • In PartyB, self issue some cash by running: flow start CashIssueFlow amount: "10 GBP", issuerBankPartyRef: "1234" , notary: "O=Notary,L=London,C=GB"
      • In PartyB, make a payment to PartyA by running: flow start CashPaymentFlow amount: "10 GBP", recipient: PartyA, anonymous: false

      Node shows:

      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 PartyA show a serialisation error:

      Caused by: java.lang.IllegalArgumentException: net.corda.core.contracts.TransactionState -> net.corda.core.contracts.TransactionState -> data(net.corda.core.contracts.ContractState) -> Not a valid Java name: net.corda.core.contracts.FungibleState<net.corda.core.contracts.Issued<java.util.Currency>>
      	at net.corda.serialization.internal.carpenter.ClassCarpenterImpl.validateSchema(ClassCarpenter.kt:440) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.carpenter.ClassCarpenterImpl.build(ClassCarpenter.kt:137) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.carpenter.MetaCarpenterBase.step(MetaCarpenter.kt:79) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.carpenter.MetaCarpenter.build(MetaCarpenter.kt:109) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.SerializerFactory.runCarpentry(SerializerFactory.kt:307) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.SerializerFactory.processSchema(SerializerFactory.kt:300) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.SerializerFactory.processSchema$default(SerializerFactory.kt:274) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.SerializerFactory$get$2.invoke(SerializerFactory.kt:241) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.SerializerFactory$get$2.invoke(SerializerFactory.kt:55) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.SerializerFactory.get(SerializerFactory.kt:239) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.DeserializationInput.readObject$serialization(DeserializationInput.kt:158) ~[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.PropertySerializer$DescribedTypePropertySerializer.readProperty(PropertySerializer.kt:92) ~[corda-serialization-3.2.jar:?]
      	at net.corda.serialization.internal.amqp.ObjectSerializer.readObjectBuildViaConstructor(ObjectSerializer.kt:121) ~[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:?]
      	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.TraversableTransaction$outputs$1.invoke(MerkleTransaction.kt:367) ~[corda-core-3.2.jar:?]
      	at net.corda.core.transactions.TraversableTransaction$outputs$1.invoke(MerkleTransaction.kt:28) ~[corda-core-3.2.jar:?]
      	at net.corda.core.transactions.TraversableTransaction.deserialiseComponentGroup(MerkleTransaction.kt:76) ~[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}

        Attachments

          Issue links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                Anthony.Keenan Anthony Keenan
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: