* CORDA-1115 - Cannot serialize private nested objects
Shown up by the simm-valuation-demo the problem was where a private
object field of an object was being serialised within the outer objects
context (see tests added for example)
Fix is to switch from Kotlin reflection back to Java.
Additional fix to the test where it was comparing two lists of state
references in a flow and they weren't equal because they weren't in the
same order... This I assume is just an oversight (in that them being
in a different order but otherwise the same is actually fine) so
converting to set comparison
* Fix forward port issue where fingerprinting has moved
* Review Comments
* Review Comments
* Review Comments
* Gran -> Grab
This was achieved by having the hash in the node-info file to be just of the node's X.500 name. This also solves existing duplicate node-info file issues that we've been having.
Also updated the docsite.
* CORDA-1122 Switch AMQP bridge to use auto-commit sends and acks
* CORDA-1122 Codereview: Add comment for extra commit to rollback and add better message sequence logging to tricky test
* CORDA-986 and CORDA-985 CompositeKey and Signature verification performance fixes (#2467)
* CORDA-696: Create separate transaction types for contract upgrade transactions.
Add rationale around upgrade transactions
Move contract upgrade transaction resolution logic into internal until it's stabilised.
Throw a better exception when contract attachment not found
Default legacy contract constraint to always accepting - needs to be changed to whitelist constraint before merging
Introduce a new upgraded contract interface that allows specifying the legacy constraint.
Remove StateLoader, make all tx resolution functions take in ServicesForResolution
Contract upgrade transactions can handle whitelist by zone constraints
When creating a contract upgrade transaction, make sure the attachment of the old cordapp gets attached when using hash constraints.
Attachment lookup for a given contract class name only scans currently loaded cordapps, and we don't load old versions of cordapps.
CORDA-696: Update upgrade docs
* ENT-1443 Add cert role to CSR and doorman issue cert according to the cert role (#431)
* Doorman and HSM create certificate base on requested cert role specified in the certificate signing request.
(cherry picked from commit 94f7392)
* remove R3 corda code
* initial zk leader election commit
* simplify latch states. now able to retry for leader
without creating a new latch
* finished zookeeper client wrapper, added unit tests, moved src files to
different module
* moved sources to node-api
* increase election wait time
* Remove sleep() causing tests to be flaky. Used countdownlatch to sync
* reworked election algorithm; path watcher is re-created right after it triggers
* moved kdocs from implementing class to interface
* remove whitespace
* added isStarted() method to ZkClient
* added a unit test that randomly executes actions on zk clients
Further, the look up of the node's own node-info from its database has been tightened to ensure there isn't more than one.
Also fixed some brittle code which was assuming exactly one address rather than at least one.
* Update check api changes to look for internals
* Update several more uses of internal
* Make check-api-changes script filter out internal class usages
* Make CordaClock part of API
* Update api-current.txt
* Remove exclusion of nodeapi.internal
* Remove access to CordaPersistence from public api
* Don't expose DB Connection from StartedMockNode and remove unnecessary transaction from CustomVaultQueryTest
* Make internal tests that use need db access use InternalMockNetwork
* Make test certificates internal
* Address further review comments
* Revert some accidental changes to api-current.txt
* Address Shams' review comments
* Update Api Scanner to filter out CordaInternal attribute
* Update api-current.txt
* Remove superfluous brackets
* Add transaction to StartedMockNode
* More leaky transaction fixes
* Added per-cordapp configuration
* Added new API for Cordformation cordapp declarations to support per-cordapp configuration
* Added a cordapp configuration sample
* Network parameters updates
Add two RPC methods networkParametersFeed and
acceptNewNetworkParameters. Implementation of client handling of network
parameters update event. Partial implementation of accepting new
parameters and installing them on the node as well as node startup with
updated parameters.
Move reading of network parameters on startup to separate
NetworkParametersReader class. Add tests.
Move NetworkParameters and NotaryInfo classes to core.
* Ignore evolvability test - to be fixed later
* Add documentation on update process
* CORDA-904 - Make evolver work with classes that use setters
* review comments
* review comments
* small fixs
* don't include systemTest in compiler.xml
* CORDA-946 - Fixes to fingerprinting breaks backward compatibility
Demonstrated using the network map parameters signed form as that's
where the problem was first seen
* Review Comments
* CORDA-915 - Replace BEANS introspector with standard reflection
Removes lib dependency and puts something in place we can better
control
* CORDA-915 - Review comment corrections
* Review Comments
Kotlin's own reflection has a habit of throwing weird errors and does not work for private objects - thus the unit test which tests this feature has actually never worked properly, but somehow works by accident. An attempt to upgrade to the latest Kotlin revealed the issue so it must have always been unstable.
Also fixes an odd bug where the inferred type of a getter wasn't
matching the constructor parameter type because that was still unbounded
and seen as T, looking at the raw type allows us to inspect this
properly
This is a multi issue problem
1. Fingerprinting of generics treats <T> and <?> differently, forcing
the evolver to be used when not needed
2. However, the evolver is required sometimes as generics are not
guaranteed to fingerprinting bi-directionally (thanks to type erasure of
deeply nested generic types). However, with serialization now writing
properties in a specific order, we need to ensure they're read back in
that order before applying them to an evolved constructor so as to
not corrupt the object reference cache
* Sql setup scripts for Oracle and datasource configuration.
* CashSelection for Oracle.
* Workaround of forbidden distinct for BLOBs.
* ojdbc8.jar driver dependency from Oracle Maven repository, ojdbc6.jar from lib (it's not in Maven repo).
* allow to use random Port in node names and trim it from schema name, remove schema with port numbers from db setup (to cater for new test, non Oracle specific change)
* Removed unnecessary code from ConfigUtilities (non Oracle specific change)
* Removed db integration tests setup for RPCStabilityTest as it doesn't start any nodes
* ENT-1282: add standalone db migration tool that works with both the node and the doorman
* ENT-1282: remove cmd line args during node startup
* ENT-1282: more clear message
* ENT-1282: fix integration test
* ENT-1282: more fixes and cleanup code
* ENT-1282: address PR comments
* ENT-1282: more fixes and refactoring
* ENT-1282: more classloader fixes
* ENT-1282: changes after demo feedback
* ENT-1282: update API
* ENT-1282: update documentation
* ENT-1282: formatting
* ENT-1282: added CONSOLE option for dry-run and logging
* ENT-1282: documentation changes
* ENT-1282: remove getMigrationResource from the public API
* ENT-1282: removed dependency on network-manager, added release-lock
* ENT-1282: Update documentation
* Make SerializationEnvironment private so as not to expose internals.
* Only expose used parts of api
* Make properties lateinit
* Removing java calls to getEnv
* Initialise properties at declaration
* Tidy up imports
* [ENT-1330]: Tool to generate migration files for CorDapps
* [ENT-1330]: cleanups
* [ENT-1330]: cleanups
* [ENT-1330]: added test to check if a migration file is properly generated and picked up
Introduced DigitalSignatureWithCert and SignedDataWithCert as internal APIs, with the expectation that they will become public; renamed the network parameters end-point to network-parameters; updated the network-map.rst doc; and did some refactoring.
* Enforce Unicode settings for SQL server (#311)
* Enforce correct unicode setting in the JDBC Url for SQL server
* Avoid cast/null check
* Fixed wrong string literal and added test to check the literal matches what Hikari expects
* Optimise Imports
* Constant for config tag and minor test improvement.
* Constant and case insensitive check
* Import and Capitalisation
* Missed curly brace
Can't actually get something to go through the serializer with a
wild card in place as it seems that's an impossible situation
* Review Changes
* CORDA-855 - Review Comments
* Review Comments
* Review comments
* [ENT-1281]: set database.runMigration=false by default and add state check at startup
* [ENT-1281]: attempt to fix tests
* [ENT-1281]: attempt to fix tests
* [ENT-1281]: set runMigration=true in the cordformation plugin
* [ENT-1281]: attempt to fix tests
* [ENT-1281]: attempt to fix tests
* [ENT-1281]: attempt to fix tests
* [ENT-1281]: fix formatting
* [ENT-1281]: typo and javadocs
* [ENT-1281]: small refactoring and added test for SchemaMigration
* [ENT-1281]: update documentation to reflect changes
* [ENT-1281]: fix tests after merge
* [ENT-1339]: for h2, allow schemas without migrations to run (#294)
* [ENT-1339]: for h2, allow schemas without migrations to run
* [ENT-1339]: fix various migration issues and change author name
* [ENT-1339]: add naming convention for migrations
* [ENT-1339]: change naming convention to use hyphens
* [ENT-1339]: change mapping of participants to be able to control the table name
* [ENT-1339]: change FK names to <=30 for oracle 11g compatibility
* [ENT-1339]: cmd line argument for migrations made consistent
* [ENT-1339]: revert abstract state superclasses
* Update db integration test setup - new tables.
* Update db integration test setup - new tables.
* [ENT-1339]: remove final from participants to allow table name config
* [ENT-1339]: shortened pk
* [ENT-1339]: revert constructor
* [ENT-1339]: change getMigrationResource api to Nullable
* fix compile error
* [ENT-1281]: fix tests after merge
* [ENT-1281]: fix tests after merge
* Oracle database drivers ojdbc7.jar and ojdbc8.jar use deserialisation which is disabled by the default in Corda. Added an Oracle package to serialFilter when the node uses Oracle database.
* Default autoCommit to false, remove setting of autocommit and only set isolationLevel if it's changed.
* Set default transaction isolation from database config
* [ENT-1339]: for h2, allow schemas without migrations to run (#294)
* [ENT-1339]: for h2, allow schemas without migrations to run
* [ENT-1339]: fix various migration issues and change author name
* [ENT-1339]: add naming convention for migrations
* [ENT-1339]: change naming convention to use hyphens
* [ENT-1339]: change mapping of participants to be able to control the table name
* [ENT-1339]: change FK names to <=30 for oracle 11g compatibility
* [ENT-1339]: cmd line argument for migrations made consistent
* [ENT-1339]: revert abstract state superclasses
* Update db integration test setup - new tables.
* Update db integration test setup - new tables.
* [ENT-1339]: remove final from participants to allow table name config
* [ENT-1339]: shortened pk
* [ENT-1339]: revert constructor
* [ENT-1339]: change getMigrationResource api to Nullable
* Raft notaries can share a single key pair for the service identity (in contrast to a shared composite public key, and individual signing key pairs). This allows adjusting the cluster size on the fly.
* For Postgres, if a schema name is provided then it's wrapped in double quotes before passing to Hibernate to preserve case-sensitivity, Liquibase does it out-of-box.
* Sql setup scripts for PostgreSQL and datasource configuration.
* Make cordform test use new network bootstrapper logic
* Fixing review comments
* Fix issue with backwards compatibility
* Fix issue with setup not being called from CordformDefinitions
* Make sure node dir is created (as CordformDefinition uses it directly if setup is overridden
Make sure tmp dir is created
* Don't crash if node dir is already created
* Stop overwriting errors
Using the --just-generate-node-info flag for the notary nodes so that their identities can be submitted to the network map server, which does the network parameters generation.
* Generate node directories as part of bootstrapping
* Include latest corda.jar in bootstrapper package
Remove SLF4J warnings on startup
* Changes post review
* More review changes
* Review changes
* Making docs clearer
* ENT-1291 Switch liquibase changelogs to use nvarchar instead of varchar
* Configure Hibernate to use nationalised strings
* Configure Hibernate to use nationalised strings
* Change schema so that UUIDs are varchars
* Update schema certificate signing request status is not unicode
* Upper case suffix for audit tables
* nvarchar -> varchar for status in the audit table
* Capitalisation
* Capitalisation
* Force hibernate to use unicode columns on SQL server
* Force hibernate to use unicode columns on SQL server
* Schema change to make PostgreSql happy
* SQL files to initialise the perfcluster db for SQL server and PostgreSql
* Code ordering and extra comment
* BFTNotaryServiceTests.kt - instantiate MockServices before each test, not at the class level - to allow database integration test clean database before each test.
* MySQLNotaryServiceTests.kt - use H2 datasource for the notary in database integration tests (and as it was before during standard integration tests)
* Revert Enterprise way of makeTestDataSourceProperties MockNode.kt.
* Minor attempt to refactor Enterprise only parts of reading database config and make it less error prone during OS->Enterprise merge.
* Override Liquibase default schema by one from the node configuration (database.schema) if they are different. This allows database tables be created within a correct schema when no default schema is set at database level.
* Pass in the databaseConfig.schema for network manager (for Liquibase schema migration).
* Quick fixes
* Fix SignedNodeInfo
Introduce network-management schema changes to reflect that NodeInfos
can have multiple signatures.
* Address Shams comments
Store SignedNodeInfo as a blob for network management tool.
With network parameters the CN is no longer needed to identify notaries. This frees it up to be used in the node's name alongside the other attributes.
Also, the identity generation logic has been simplified, removing the need to have magic string values for storing distributed identities in the keystore. Now there are just two alias prefixes: "identity" as it was previously, and "distributed-notary".
* Add roles to X509 certificates so that the identity service can always determine which certificate in a hierarchy is the well known identity
* Rename CLIENT_CA certificate type to NODE_CA
* Rename DOORMAN role to INTERMEDIATE_CA
* Correct issue in CashTests where instead of providing a well known identity to generateSpend(), a confidential identity was passed in and a confidential identity generated from it.
* Enforce role hierarchy in PKI
* Enforce that party certificates must be well known or confidential identities
* Add network map certificate role
Copying of the node-info files moved out of Cordform and into NetworkParametersGenerator (which is now called NetworkBootstrapper). This class becomes an external tool to enable deployment of nodes in a test setup on a single filesystem.
* * Document TestIdentity entropy and enforce that it actually works
* Ledger/transaction DSL default notary with fresh key
* MockServices default identity with fresh key
* makeTestIdentityService now takes vararg
* Require cordappPackages for MockServices
* DSL automatic serialization init
* Improve error when two MockNetworks used
* * Make cordappPackages required by MockNetwork
* Default identity service in MockServices
* Make notarySpecs Java-friendly
* Able to send hand coded messages to an Artemis node inbox
Get startup race condition fixed. Start cleanup work.
Fixup after rebase
Remove SASL hack for now
Minor tweaks. Enable AMQP mode manually.
Add configuration control
Slight clean up
Stop timeouts that don't work with AMQP
Rename class
Get TLS constants from :node-api
Primitive integration test
Put back commented line
Session per bridge to alow rollback on remote rejects.
Add more tests and handle multiple IP adddresses
Reduce logging
Fixup after rebase
Add a test to verify the remote end AMQP rejection logic works and does cause message replay.
Allow Artemis to duplicate after session rollback
Reduce number of threads
Move legacy bridge related code over to CoreBridgeManager
Shared threadpool for bridges
Add a test to confirm that no side effects when using a shared thread pool.
Address PR comments and remove dead lines
Rebase and add some comments
Remove a couple of blank lines
Ensure AMQP bridges are used in tests
Fixup after removal of testNodeConfiguration
Add a couple of doc comments
Add a couple of doc comments
Make things internal and use CordaFuture
Address some PR comments
Change comment type
* Use Artemis 2.2 to fix AMQP problems. Add explicit test of legacy core bridges, as marking the factory class private had silently broken them.
* Fix change due to using Artemis 2.2