diff --git a/node/src/main/kotlin/net/corda/node/services/statemachine/FlowStateMachineImpl.kt b/node/src/main/kotlin/net/corda/node/services/statemachine/FlowStateMachineImpl.kt index e81a4d2bef..17dacb93be 100644 --- a/node/src/main/kotlin/net/corda/node/services/statemachine/FlowStateMachineImpl.kt +++ b/node/src/main/kotlin/net/corda/node/services/statemachine/FlowStateMachineImpl.kt @@ -30,6 +30,7 @@ import net.corda.core.internal.FlowStateMachine import net.corda.core.internal.IdempotentFlow import net.corda.core.internal.VisibleForTesting import net.corda.core.internal.concurrent.OpenFuture +import net.corda.core.internal.cordapp.CordappProviderInternal import net.corda.core.internal.isIdempotentFlow import net.corda.core.internal.location import net.corda.core.internal.telemetry.ComponentTelemetryIds @@ -320,7 +321,7 @@ class FlowStateMachineImpl(override val id: StateMachineRunId, private fun openThreadLocalWormhole() { // This sets the Cordapp classloader on the contextClassLoader of the current thread. // Needed because in previous versions of the finance app we used Thread.contextClassLoader to resolve services defined in cordapps. - Thread.currentThread().contextClassLoader = (serviceHub.cordappProvider as CordappProviderImpl).cordappLoader.appClassLoader + Thread.currentThread().contextClassLoader = serviceHub.cordappProvider.appClassLoader val threadLocal = transientValues.database.hikariPoolThreadLocal if (threadLocal != null) { val valueFromThread = swappedOutThreadLocalValue(threadLocal)