Steps to reproduce:
set validating = false in net.corda.bank.BankOfCordaCordform to make the notary non-validating
remove issuableCurrencies and webAddress entries from BankOfCorda/node.conf
In BankOfCorda (V4 node) shell:
The flow will fail with Counter-flow errored message. In BigCorporation's logs (the V3 node) you will see the following error:
This is a bug fix for V3.
Just linked to as well as the same happens with an ENT 3.2 node - so we will also need to fix in ENT 3.3.
Summary from the Slack discussion:
The carpenter is purposed to synthesize only POJOs & enums, so it fails to synthesize this interface
One possible workaround to avoid this would be to ignore interfaces during serialization. Currently, the infrastructure needed to do that selectively based on the nature of the usage (i.e. interfaces as properties VS interfaces as generic types) is not there, so it would be an ignore-all situation, which could introduce runtime errors.
Another thing I was thinking we could use to mitigate risk could be a gating approach, i.e. ignore this specific interface FungibleState, only for platform versions earlier that when it was introduced. This should be safe, without degrading the CX, since there should be no expectation of using a feature of a later version.
However, waiting for to come back from leave, so that we can chat on the repercussions of these.
For v3, we will do the following: interfaces will be attempted to be loaded, only when there's a class that implements that interface that's missing from the classpath and thus will need to be carpented .The fix PR for v3 has been approved and pending to be merged.
This issue won't exist from v4 and going forward. The reason is that interfaces are also carpented (using only their "getter" properties). So, in our case, the missing interface would be carpented, even though the associated class is loaded from the classpath.