From 97d8549d4f4f1eb1c0b884224ef91585c52b1cbf Mon Sep 17 00:00:00 2001 From: Jose Coll Date: Mon, 3 Jul 2023 10:02:34 +0100 Subject: [PATCH] ENT-9927 Ledger Recovery tweaks. (#7407) --- .../corda/core/flows/ReceiveTransactionFlow.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/main/kotlin/net/corda/core/flows/ReceiveTransactionFlow.kt b/core/src/main/kotlin/net/corda/core/flows/ReceiveTransactionFlow.kt index 435b14605b..a4f2defa3a 100644 --- a/core/src/main/kotlin/net/corda/core/flows/ReceiveTransactionFlow.kt +++ b/core/src/main/kotlin/net/corda/core/flows/ReceiveTransactionFlow.kt @@ -60,11 +60,7 @@ open class ReceiveTransactionFlow constructor(private val otherSideSession: Flow } val payload = otherSideSession.receive().unwrap { it } - val stx = - if (payload is SignedTransactionWithDistributionList) { - (serviceHub as ServiceHubCoreInternal).recordReceiverTransactionRecoveryMetadata(payload.stx.id, otherSideSession.counterparty.name, ourIdentity.name, statesToRecord, payload.distributionList) - payload.stx - } else payload as SignedTransaction + val stx = resolvePayload(payload) stx.pushToLoggingContext() logger.info("Received transaction acknowledgement request from party ${otherSideSession.counterparty}.") checkParameterHash(stx.networkParametersHash) @@ -87,6 +83,15 @@ open class ReceiveTransactionFlow constructor(private val otherSideSession: Flow return stx } + open fun resolvePayload(payload: Any): SignedTransaction { + return if (payload is SignedTransactionWithDistributionList) { + if (checkSufficientSignatures || deferredAck) { + (serviceHub as ServiceHubCoreInternal).recordReceiverTransactionRecoveryMetadata(payload.stx.id, otherSideSession.counterparty.name, ourIdentity.name, statesToRecord, payload.distributionList) + payload.stx + } else payload.stx + } else payload as SignedTransaction + } + /** * Hook to perform extra checks on the received transaction just before it's recorded. The transaction has already * been resolved and verified at this point.