Merge pull request #45 from corda/parkri-external-observations-2

Move Flow returned Future complete outside database transaction
This commit is contained in:
Rick Parker 2016-12-09 12:58:55 +00:00 committed by GitHub
commit a007ecf980

View File

@ -86,15 +86,16 @@ class FlowStateMachineImpl<R>(override val id: StateMachineRunId,
val result = try { val result = try {
logic.call() logic.call()
} catch (t: Throwable) { } catch (t: Throwable) {
processException(t) actionOnEnd()
commitTransaction() commitTransaction()
_resultFuture?.setException(t)
throw ExecutionException(t) throw ExecutionException(t)
} }
// This is to prevent actionOnEnd being called twice if it throws an exception // This is to prevent actionOnEnd being called twice if it throws an exception
actionOnEnd() actionOnEnd()
_resultFuture?.set(result)
commitTransaction() commitTransaction()
_resultFuture?.set(result)
return result return result
} }
@ -264,8 +265,8 @@ class FlowStateMachineImpl<R>(override val id: StateMachineRunId,
// This can get called in actionOnSuspend *after* we commit the database transaction, so optionally open a new one here. // This can get called in actionOnSuspend *after* we commit the database transaction, so optionally open a new one here.
databaseTransaction(database) { databaseTransaction(database) {
actionOnEnd() actionOnEnd()
_resultFuture?.setException(t)
} }
_resultFuture?.setException(t)
} }
internal fun resume(scheduler: FiberScheduler) { internal fun resume(scheduler: FiberScheduler) {