Commit Graph

2028 Commits

Author SHA1 Message Date
9353e4dd93 [CORDA-2561] Use the attachments classloader to deserialise contract states in migrations (#4754)
* Use the attachments classloader to deserialize contract states in migrations

* Added some comments to explain serialisation behaviour and how tests work.

* Add debug log to indicate when attachment classloading has failed.

* Use a servicesForResolution to load states for compatibility with notary changes and contract upgrades

* Add test case to cover notary change transactions

* Address review comments

* Change logging message in MigrationServicesForResolution

* Read the network-parameters file if there is nothing in the database

* Update documentation and provide a warning if there are many states.
2019-02-17 08:24:02 +00:00
e5c7355d43 CORDA-2550 use cordapp classloader for explicit upgrades (#4766)
CORDA-2550 use cordapp classloader for explicit upgrades

CORDA-2550 Fix api break

CORDA-2550 Fix api break

CORDA-2550 Fix api break

CORDA-2550 Address code review comments

CORDA-2550 Fix error

CORDA-2550 Remove redundant field.

CORDA-2550 Remove redundant field.

CORDA-2550 remove unnecessary copy method

CORDA-2550 remove unnecessary copy method
2019-02-16 17:46:23 +00:00
9b2725d3aa [CORDA-2486] Improve transaction deserialisation errors and fix possible migration issue (#4761)
* Improve error when transaction deserialisation fails and move migrations for finance to contracts CorDapp

* Revert move of migrations and errors thrown from CordaRPCOps

* Ensure VaultQueryException is thrown from vault queries and remove unused import

* Improve error reporting from VaultQueryException

* Fix API break

* Fix vault query test failure due to exception change
2019-02-15 17:43:04 +00:00
3d362e066c CORDA-2595 - check that all attachments are trusted before loading (#4763)
CORDA-2595 - Fix test and api.

CORDA-2595 add test

CORDA-2595 fix tests

CORDA-2595 fix test and address code review comments

CORDA-2595 address code review comments
2019-02-15 17:33:14 +00:00
a17ab0d547 Revert unnecessary refactoring. 2019-02-15 10:55:13 +01:00
758c855493 Adjust warning level. 2019-02-15 10:55:13 +01:00
6314c1757a Incorporating feedback from PR review. 2019-02-15 10:55:13 +01:00
4feac7f3f0 Shorten system property name. 2019-02-15 10:55:13 +01:00
e252401169 Disable hash constraints using system property. 2019-02-15 10:55:13 +01:00
060bbb0a9d CORDA-2563: Assign external IDs when creating new keys (#4727)
* First pass at fixing 2563.

* In memory KMS now maps keys to IDs.

* CreateDatabaseAndMockServices now creates a persistent key management service and a can take a persistent identity service, so now the external id mapping works for mock services.

* * Created a helper for mock services which allows the creation of a mock services with persistent identity management service key management service and vault.
* MockNode now uses persistent key management service - not sure why it didn't do before?

* * MockNode now uses BasicHSMKeyManagementService
* Updated api-current file

* Little fix required after rebase to master.

* Fixed broken test.

* Added informative error messages to UnsupportedOperationExceptions thrown by E2ETestKeyManagementService.

* Removed redundant private constructor for mock services from api-current.txt.

* Addressed Rick's comments.
2019-02-14 15:18:37 +00:00
0bdc8b363a CORDA-2576 Viral update propagation: select attachments from those loaded by node on startup. (#4745)
* Retrieve contract attachment(s) loaded by node.

* Remove redundant integration test case (downgrade rule checking)

* Address PR review comments.

* Revert changes to classloading dependencies hack.
2019-02-14 13:39:14 +00:00
a0fb21446e Simple change to the message returned when the requested legal identity does not exist on the Node. Previously it returned Node does not have an identity, which is slightly confusing as the Node does have a legal identity, just not the one that was requested. Changing the message text to Node does not have the requested identity of makes it clearer that the client requested an identity different to any of the ones that this Node represents.
Added an isLegalIdentity function that allows the client to check if the Node represents the requested CordaX500Name without throwing an exception if it does not.
2019-02-14 09:55:33 +01:00
3fef5d8239 CORDA-2570 Add comment for future performance optimisation. 2019-02-13 13:42:42 +00:00
fc0b1431ad CORDA-2570 fix KDoc 2019-02-13 13:30:37 +00:00
00ddb5793d Merge branch 'master' into feature/CORDA-2570/revert-to-one-attachment-per-contract
# Conflicts:
#	core/src/main/kotlin/net/corda/core/internal/TransactionVerifierServiceInternal.kt
#	core/src/test/kotlin/net/corda/core/contracts/ConstraintsPropagationTests.kt
2019-02-13 13:10:28 +00:00
764b33ded5 CORDA-2570 address code review comments 2019-02-13 12:17:48 +00:00
10e7c07c11 CORDA-2577 Disable or delete the no-downgrade rule (#4741)
With (Contract JARs) rolling upgrades the downgrade rule cannot be effectively check as the platform can't tell the difference between a transaction that's downgrading because of an attack, vs a transaction that's downgrading because Alice has upgraded but Bob hasn't yet. During a rolling upgrade we would expect state versions to fluctuate up and down as data gets read/written by a mix of nodes. With the feature as implemented Alice will upgrade and start trading with Bob. Bob will be able to read and process the states Alice sent him, but the moment he tries to consume such a state he will fail. This will result in cascading flow deaths and a hung business network the moment an upgrade starts.
2019-02-13 11:36:43 +00:00
4a4788ad41 CORDA-2570 fix test 2019-02-13 10:58:28 +00:00
9448b9bd86 CORDA-2570 revert multiple contract attachments per transaction 2019-02-12 18:49:05 +00:00
a6510ae952 CORDA-2570 revert multiple contract attachments per transaction 2019-02-12 18:41:45 +00:00
f541843eff Temporary workaround for a bug that was exposed by a refactoring. Will follow up with a fix in another PR. 2019-02-11 17:10:50 +01:00
02645f7b9e Rework package namespace ownership check to verify every package of every class file.
Previous implementation was in LedgerTransaction and focused only on contract classes,
but every package matters.

Also fixes some exception types and does misc refactorings.
2019-02-11 17:10:50 +01:00
b9ecc5243f Tell ProGuard to remove FlowLogic and ProgressTracker classes. 2019-02-11 17:10:50 +01:00
0a9f4c68ae Minor refactorings.
Take out a useless parameter from a method that was added to the public
API, document it. Add some comments explaining more about why we are
looking up attachment versions in WireTransaction.toLedgerTransaction.
2019-02-11 17:10:50 +01:00
f729453fee CORDA-2334 - Net Params non-downgrade verification in transaction resolution / building. (#4351)
* Add FetchParametersFlow

* No downgrade parameters in ResolveTransactionsFlow

Make sure that parameters in the transaction
graph are ordered (this is to prevent the downgrade attack, when the
malicious notary and participants sign transaction that shouldn't be
notarised otherwise). We ensure that by checking that epochs of network
parameters in the transaction chain are ordered.

* Addressed some minor items from RP review feedback.

* Refactoring following rebase from master.

* Address RP PR review comments (round 2)

* Addressed a couple of minor PR review points.

* Renaming of unit tests and cleanup.

* Changes discusses with RP to ensure Network Param checking is applied at txn verify time + resolve order checking gated on existence of tagged NPs in txn and associated minimum platform version.

* Do not fail on missing ServiceHub impl + return nothing if txn not NP tagged.

* Unify HistoricNetworkParametersStorage and
NetworkParametersStorageInternal

* SignedDataWithCert implements NamedByHash

* Cleanup

* Move parameters ordering check to signed transaction resolution

* Fixes after merge, address comments

* Address Andrius comments
2019-02-08 15:29:32 +00:00
0c33d2fd9d CORDA-2514 Constraints checking failures do not provide indication of cause (#4638) (#4688)
* Add logging to constraints checking to indicate reason of failure.

* Additional debug logging message.
2019-02-07 18:32:42 +00:00
0360a33e5c State pointers are always resolved, so the kdocs should reflect this. (#4716) 2019-02-06 09:52:11 +00:00
c39c61ecab CORDA-2467: Moved non-contract things out of finance-contracts and into finance-workflows (#4700)
This includes all of the cash selection logic, JSON support using jackson and a bunch of utilities which are not relevant to contract verification. The exception to this are Interpolator which has been moved to the IRS demo, and PhysicalLocationStructures.kt which is now in explorer.
2019-02-01 17:31:12 +00:00
0632d275ed CORDA-2540 Adjust no overlap rule to avoid premature optimization (#4693)
Fix invalid optimization in AttachmentsClassLoader.
2019-01-31 17:59:01 +01:00
37eb93fa76 Tighten no overlap check. (#4690) 2019-01-30 22:01:18 +00:00
91c2d75f31 Fix bug in verifier for has to signature constraints (auto-migration). (#4680) 2019-01-30 15:54:12 +00:00
365471d9f4 CORDA-2531 State mappings are now also updated for new reference states. (#4681)
* State mappings are now also updated for new reference states.
Added a test to prove the above works.

* Addressed Rick's review comments.
2019-01-30 10:42:43 +00:00
7dc7313fb7 ENT-3000 Start pooling classpath scanning and related fixes (#4664)
* Start pooling classpath scanning

Quickly patch synchronisation of attachment class loader cache.  Needs a revisit but more complicated due to DJVM.

Annotate away for DJVM

Take ClassGraph utils into their own file so we can exclude for DJVM

Clean up a little

* Daemonize the threads

* Seems to be some concurrency problems with use of ClassGraph.  Using a mutex for now to work around.
2019-01-30 10:35:20 +00:00
6efd54fce1 CORDA-2520: Add FetchParametersFlow (#4674)
* CORDA-2520: Add FetchParametersFlow

* Address comments, add test
2019-01-29 18:16:37 +00:00
e20278fbfd Made FlowCheckpointVersionNodeStartupCheckTest leaner (#4640)
* Removed `restart node successfully with suspended flow` as it duplicates `TraderDemoTest#Test restart node during flow works properly`
* Removed the need for a notary
2019-01-28 14:08:54 +00:00
0e1c20a883 CORDA-2497 fix (#4630)
CORDA-2497 fix
* Added test to show the fix working.
* Now backwards compatible.
* Refactored out some duped code.
* Added better explanations for what's going on.
* Fixed test which was failing due to the serializationEnvRule problem.
* Addressed Tudor's review comments.
2019-01-24 20:36:33 +00:00
16d53505d7 [CORDA-2496] - Adjust CorDappResolver to handle same CorDapp registered multiple times (#4631) 2019-01-24 17:06:05 +00:00
1b89ece09b CORDA-2504 improve error message of missing contract attachments (#4628)
* CORDA-2504 Improved MissingContractAttachments error to ensure it contains contractClassName.

* CORDA-2504 Improved MissingContractAttachments error to ensure it contains contractClassName.

* CORDA-2504 Improved MissingContractAttachments error to ensure it contains contractClassName - additional API overloaded method.

* CORDA-2504 Improved MissingContractAttachments error to ensure it contains contractClassName - unnecessary change.

* Docs

* fix docs

* fix docs 2

* fix docs 3
2019-01-24 15:48:07 +00:00
5bb5244e55 CORDA-2228: Exceptions emanating from ReceiveFinalityFlow are sent to the flow hospital (#4621) 2019-01-23 16:24:49 +00:00
82f5a756fe Add minimum platform version check before attempting a hash -> signature constraints auto migration. (#4623) 2019-01-23 13:10:41 +00:00
100a6fcb56 CORDA-2475 Adjust attachments query logic to return correct results (#4612)
* CORDA-2475 Adjust attachments query logic to return correct results sets for signed/unsigned jars.

* Updates following PR review feedback by RP.
2019-01-22 22:57:43 +00:00
197a13611d ENT-2967 Fix up use of various JDK performance contention points (#4608)
* ENT-2967 Various JDK contention points

* Move new private method to bottom of class.
2019-01-22 11:19:51 +00:00
c6a7d14f4f Reducing the size of the CorDapp jars used in tests (#4600)
The helper method enclosedCordapp is a replacement to scanning the current package (which pulls in a lot more into the jar than intended).
2019-01-21 13:54:26 +00:00
498db538d7 CORDA-2442: Added wither methods to the vault query classes (#4585) 2019-01-15 21:02:02 +00:00
5bb38e455c Add back V3 TransactionBuilder c'tor (#4587) 2019-01-15 18:52:58 +00:00
f592025273 Regen isolated jar to fix failing test(s) (#4583)
https://github.com/corda/corda/pull/4541 removed TransactionBuilder c'tor (which was introduced post-V3) which the frozen isolated jar was using
2019-01-15 14:56:57 +00:00
fbb00bff9c [CORDA-2431] - Small refactorings following-up on PR-4551 (#4564)
* Small refactorings following-up on PR-4551

* Adjust thread context class loader

* Address Shams' comments
2019-01-15 14:34:11 +00:00
05ffb3d101 CORDA-2403: Flagged API issues between 4.0 and 3.3. (#4541) 2019-01-15 14:27:29 +00:00
f51cfc34bf [CORDA-2431] - Reduce memory footprint of classpath scanning (#4576)
* Reduce memory footprint of classpath scanning

* Close scan result in the end
2019-01-15 10:15:40 +00:00
3b8347e150 Fixed AttachmentLoadingTests (#4565)
There were two issues:
* The original "sealing violation: can't seal package net.corda.nodeapi" issue was due to the isolated CorDapp containing some code in the net.corda.nodeapi namespace. This has been moved to the isolated namespace.
* The test was not correctly creating the second transaction with the dummy command
2019-01-14 14:32:14 +00:00