diff --git a/build.gradle b/build.gradle index 92c30ff52a..2acd0cc068 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ buildscript { ext.kotlin_version = '1.0.3' - ext.quasar_version = '0.7.5' + ext.quasar_version = '0.7.6' ext.asm_version = '0.5.3' ext.artemis_version = '1.3.0' ext.jackson_version = '2.8.0.rc2' diff --git a/lib/quasar.jar b/lib/quasar.jar index 2734f0a68a..286f065e43 100644 Binary files a/lib/quasar.jar and b/lib/quasar.jar differ diff --git a/node/src/main/kotlin/com/r3corda/node/services/statemachine/StateMachineManager.kt b/node/src/main/kotlin/com/r3corda/node/services/statemachine/StateMachineManager.kt index e6b247d4d9..697ca6f638 100644 --- a/node/src/main/kotlin/com/r3corda/node/services/statemachine/StateMachineManager.kt +++ b/node/src/main/kotlin/com/r3corda/node/services/statemachine/StateMachineManager.kt @@ -215,8 +215,8 @@ class StateMachineManager(val serviceHub: ServiceHubInternal, tokenizableService * restarted with checkpointed state machines in the storage service. */ fun add(loggerName: String, logic: ProtocolLogic): ListenableFuture { + val fiber = ProtocolStateMachineImpl(logic, scheduler, loggerName) try { - val fiber = ProtocolStateMachineImpl(logic, scheduler, loggerName) // Need to add before iterating in case of immediate completion initFiber(fiber) { val checkpoint = Checkpoint(serializeFiber(fiber), null) @@ -229,11 +229,12 @@ class StateMachineManager(val serviceHub: ServiceHubInternal, tokenizableService } totalStartedProtocols.inc() } - return fiber.resultFuture } catch (e: Throwable) { + // TODO: We should be able to remove this as we get more confident that we never fail to log exceptions. e.printStackTrace() - throw e + check(fiber.resultFuture.isDone) } + return fiber.resultFuture } private fun updateCheckpoint(psm: ProtocolStateMachineImpl<*>, diff --git a/node/src/test/kotlin/com/r3corda/node/services/persistence/DataVendingServiceTests.kt b/node/src/test/kotlin/com/r3corda/node/services/persistence/DataVendingServiceTests.kt index 44db3c9097..66a09a4b3b 100644 --- a/node/src/test/kotlin/com/r3corda/node/services/persistence/DataVendingServiceTests.kt +++ b/node/src/test/kotlin/com/r3corda/node/services/persistence/DataVendingServiceTests.kt @@ -7,13 +7,13 @@ import com.r3corda.core.contracts.TransactionType import com.r3corda.core.contracts.USD import com.r3corda.core.testing.DUMMY_NOTARY import com.r3corda.core.testing.MEGA_CORP +import com.r3corda.core.testing.rootCauseExceptions import com.r3corda.node.internal.testing.MockNetwork import org.junit.Before import org.junit.Test import java.util.concurrent.TimeUnit import kotlin.test.assertEquals import kotlin.test.assertFailsWith -import kotlin.test.assertTrue /** * Tests for the data vending service. @@ -76,10 +76,11 @@ class DataVendingServiceTests { val notifyPsm = DataVending.Service.notify(registerNode.net, registerNode.services.storageService.myLegalIdentity, walletServiceNode.info, tx) - // Check it was accepted + // Check it was not accepted network.runNetwork() - val ex = assertFailsWith { notifyPsm.get(1, TimeUnit.SECONDS) } - assertTrue(ex.cause is DataVending.Service.TransactionRejectedError) + assertFailsWith { + rootCauseExceptions { notifyPsm.get() } + } // Check the transaction is not in the receiving node assertEquals(0, walletServiceNode.services.walletService.currentWallet.states.toList().size)