From 160540680cfa2968211b308fb5db7881fd54a87d Mon Sep 17 00:00:00 2001 From: Katelyn Baker Date: Mon, 6 Nov 2017 14:30:54 +0000 Subject: [PATCH] Observer Nodes Cherry pick cleanup --- .../main/kotlin/net/corda/node/internal/AbstractNode.kt | 1 + .../net/corda/node/services/vault/NodeVaultService.kt | 9 +++++---- .../services/persistence/DBTransactionStorageTests.kt | 1 + .../services/persistence/HibernateConfigurationTest.kt | 4 ++-- .../corda/node/services/vault/NodeVaultServiceTest.kt | 6 +++--- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt b/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt index 41a2ba697d..ce8815594c 100644 --- a/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt +++ b/node/src/main/kotlin/net/corda/node/internal/AbstractNode.kt @@ -24,6 +24,7 @@ import net.corda.core.messaging.RPCOps import net.corda.core.messaging.SingleMessageRecipient import net.corda.core.node.NodeInfo import net.corda.core.node.ServiceHub +import net.corda.core.node.StatesToRecord import net.corda.core.node.services.* import net.corda.core.node.services.NetworkMapCache.MapChange import net.corda.core.schemas.MappedSchema diff --git a/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt b/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt index 5335d794de..afccd68c19 100644 --- a/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt +++ b/node/src/main/kotlin/net/corda/node/services/vault/NodeVaultService.kt @@ -10,6 +10,7 @@ import net.corda.core.internal.bufferUntilSubscribed import net.corda.core.internal.tee import net.corda.core.messaging.DataFeed import net.corda.core.node.ServiceHub +import net.corda.core.node.StatesToRecord import net.corda.core.node.services.StatesNotAvailableException import net.corda.core.node.services.Vault import net.corda.core.node.services.VaultQueryException @@ -104,13 +105,16 @@ class NodeVaultService(private val services: ServiceHub, private val hibernateCo override val updates: Observable> get() = mutex.locked { _updatesInDbTx } + /** Same as notifyAll but with a single transaction. */ + fun notify(statesToRecord: StatesToRecord, tx: CoreTransaction) = notifyAll(statesToRecord, listOf(tx)) + /** * Splits the provided [txns] into batches of [WireTransaction] and [NotaryChangeWireTransaction]. * This is required because the batches get aggregated into single updates, and we want to be able to * indicate whether an update consists entirely of regular or notary change transactions, which may require * different processing logic. */ - override fun notifyAll(statesToRecord: StatesToRecord, txns: Iterable) { + fun notifyAll(statesToRecord: StatesToRecord, txns: Iterable) { if (statesToRecord == StatesToRecord.NONE) return @@ -141,9 +145,6 @@ class NodeVaultService(private val services: ServiceHub, private val hibernateCo if (notaryChangeTxns.isNotEmpty()) notifyNotaryChange(notaryChangeTxns.toList(), statesToRecord) } - /** Same as notifyAll but with a single transaction. */ - fun notify(tx: CoreTransaction) = notifyAll(listOf(tx)) - private fun notifyRegular(txns: Iterable, statesToRecord: StatesToRecord) { fun makeUpdate(tx: WireTransaction): Vault.Update { val myKeys = services.keyManagementService.filterMyKeys(tx.outputs.flatMap { it.data.participants.map { it.owningKey } }) diff --git a/node/src/test/kotlin/net/corda/node/services/persistence/DBTransactionStorageTests.kt b/node/src/test/kotlin/net/corda/node/services/persistence/DBTransactionStorageTests.kt index ec69c88b00..90b0be3b4a 100644 --- a/node/src/test/kotlin/net/corda/node/services/persistence/DBTransactionStorageTests.kt +++ b/node/src/test/kotlin/net/corda/node/services/persistence/DBTransactionStorageTests.kt @@ -15,6 +15,7 @@ import net.corda.finance.schemas.CashSchemaV1 import net.corda.finance.schemas.SampleCashSchemaV2 import net.corda.finance.schemas.SampleCashSchemaV3 import net.corda.node.services.schema.HibernateObserver +import net.corda.node.services.schema.NodeSchemaService import net.corda.node.services.transactions.PersistentUniquenessProvider import net.corda.node.services.vault.NodeVaultService import net.corda.node.services.vault.VaultSchemaV1 diff --git a/node/src/test/kotlin/net/corda/node/services/persistence/HibernateConfigurationTest.kt b/node/src/test/kotlin/net/corda/node/services/persistence/HibernateConfigurationTest.kt index 9c1c1543db..026cd8a7a0 100644 --- a/node/src/test/kotlin/net/corda/node/services/persistence/HibernateConfigurationTest.kt +++ b/node/src/test/kotlin/net/corda/node/services/persistence/HibernateConfigurationTest.kt @@ -85,11 +85,11 @@ class HibernateConfigurationTest : TestDependencyInjectionBase() { services = object : MockServices(BOB_KEY, BOC_KEY, DUMMY_NOTARY_KEY) { override val vaultService: VaultService = makeVaultService(database.hibernateConfig) - override fun recordTransactions(notifyVault: Boolean, txs: Iterable) { + override fun recordTransactions(statesToRecord: StatesToRecord, txs: Iterable) { for (stx in txs) { validatedTransactions.addTransaction(stx) } - (vaultService as NodeVautService).notifyAll(statesToRecord, txs.map { it.tx }) + (vaultService as NodeVaultService).notifyAll(statesToRecord, txs.map { it.tx }) } override fun jdbcSession() = database.createSession() } diff --git a/node/src/test/kotlin/net/corda/node/services/vault/NodeVaultServiceTest.kt b/node/src/test/kotlin/net/corda/node/services/vault/NodeVaultServiceTest.kt index 1448e9a080..0118f7c038 100644 --- a/node/src/test/kotlin/net/corda/node/services/vault/NodeVaultServiceTest.kt +++ b/node/src/test/kotlin/net/corda/node/services/vault/NodeVaultServiceTest.kt @@ -6,7 +6,6 @@ import net.corda.core.crypto.generateKeyPair import net.corda.core.identity.AbstractParty import net.corda.core.identity.AnonymousParty import net.corda.core.identity.Party -import net.corda.core.internal.packageName import net.corda.core.node.StatesToRecord import net.corda.core.node.services.* import net.corda.core.node.services.vault.PageSpecification @@ -29,6 +28,7 @@ import net.corda.node.utilities.CordaPersistence import net.corda.testing.* import net.corda.testing.contracts.fillWithSomeTestCash import net.corda.testing.node.MockServices +import net.corda.testing.node.MockServices.Companion.makeTestDatabaseAndMockServices import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThatExceptionOfType import org.junit.After @@ -590,7 +590,7 @@ class NodeVaultServiceTest : TestDependencyInjectionBase() { txb.addCommand(Cash.Commands.Move(), MEGA_CORP_PUBKEY) val wtx = txb.toWireTransaction(services) database.transaction { - vaultService.notify(StatesToRecord.ONLY_RELEVANT, wtx) + (vaultService as NodeVaultService).notify(StatesToRecord.ONLY_RELEVANT, wtx) } // Check that it was ignored as irrelevant. @@ -598,7 +598,7 @@ class NodeVaultServiceTest : TestDependencyInjectionBase() { // Now try again and check it was accepted. database.transaction { - vaultService.notify(StatesToRecord.ALL_VISIBLE, wtx) + (vaultService as NodeVaultService).notify(StatesToRecord.ALL_VISIBLE, wtx) } assertEquals(currentCashStates + 1, countCash()) }