Commit Graph

658 Commits

Author SHA1 Message Date
Mike Hearn
ac90fe724e Shell: add support for uploading and downloading attachments. 2017-03-24 12:44:54 +01:00
Mike Hearn
347224c900 Improve attachment checks to ensure that a stream is actually a JAR/ZIP. 2017-03-24 12:44:54 +01:00
Mike Hearn
2cb02c75eb Minor: remove ANSI progress observer, delete some currently dead code in the shell. 2017-03-24 12:44:54 +01:00
Marek Skocovsky
262c87a5c6 Integrate CRaSH shell (SSHD). Joint effort between Mike Hearn and Marek Skocovsky.
The shell is embedded in the node and offers the ability to monitor
and control the node via the launching terminal.

Still to do:

* Switch to a fork of CRaSH that we can maintain ourselves, and merge in Marek's SSH patch so we can enable SSH access.
* Add persistent command history that survives restarts.
* Tab completion for the 'flow' and 'run' commands.
* Remove the 'jul' command and replace it with a command that lets you see and tail the log4j logs instead.
* Fix or remove the other crash commands that have bitrotted since 2015.
2017-03-24 12:44:54 +01:00
Andrius Dagys
71fe3e3d3b Record a metric for duration and rate of execution for every flow (#372)
* Record a metric for the duration and rate of execution for every flow. This is useful for task intense scenarios to detect performance degradation.

* Measure both successful and failed flow durations
2017-03-22 16:52:41 +00:00
Chris Rankin
98266da41c Refactor CordaRPCClient into new :client:rpc Gradle module. (#405)
* CORDA-305: Refactor CordaRPCClient into :client:rpc module

* CORDA-305: Remove the Kotlin test framework from the artifacts.

* CORDA-305: Migrate serialisation whitelist into node-api module.

* CORDA-305: Clean up unused RPC observables.

* CORDA-305: Add :client:rpc module to documentation tasks.

* CORDA-305: Include :finance into :client:rpc for its serialisable classes.

* CORDA-305: Move test classes into the correct directory.

* CORDA-305: Migrate :finance dependency from :client:rpc into DemoBench.

* CORDA-305: Update wording of TODO about handling Observables.
2017-03-22 15:52:54 +00:00
Ross Nicoll
7e0e7bc645 Fix warning in NodeAttachmentService 2017-03-22 12:20:29 +01:00
Chris Rankin
9e43df36d3 Refactor :client module into :client:javafx and :client:mock (#388)
* CORDA-304: Refactor :client modules into :client:javafx and :client:mock.

* CORDA-304: Add :client:mock to Dokka tasks, and remove unused integrationTest task.

* CORDA-304: Migrate DriverBasedTest from node into test-utils.

* CORDA-304: Rename .fx. package to .jfx. to prevent confusion with "exchange rate".

* CORDA-304: Rename module to ':client:jfx'.
2017-03-21 19:45:12 +00:00
Andras Slemmer
7a9bc5bfad driver: Add ShutdownManager, make network map service optional 2017-03-21 18:08:21 +00:00
Mike Hearn
1243118aa9 Minor: more banking jokes, surround legal name in quotes 2017-03-21 18:01:17 +01:00
Mike Hearn
4c6548107a Minor: don't repeat the legal name of the node multiple times in the output (which causes indentation issues) 2017-03-21 18:01:17 +01:00
Shams Asari
209f5c8a25 Logging fixes, including broken --logging-level cmd line arg 2017-03-21 15:36:32 +00:00
Mike Hearn
0d54832d88 FlowSessionException is sent over RPC so must be serializable and documented. 2017-03-20 15:17:31 +01:00
Andras Slemmer
4f6b44ceff Merge pull request #379 from corda/aslemmer-node-api
Add :node-api, factor out some artemis code
2017-03-20 13:31:21 +00:00
Andras Slemmer
d3f956ab60 Address PR 379 comments 2017-03-17 15:09:04 +00:00
Rick Parker
1de1f9095f Several tests were corrupting Kryo which was then returned to the common pool. (#378)
* We were leaving trailing attachmentStorage on pooled kryo instances after some tests.  Changed attachment storage logic to make it impossible to leave it behind.

* Some low level tests corrupt the Kryo config, so do not return to pool when this is the case.  Also, we discovered that Kryo is caching class name to class resolution.  We don't want to do this where attachments are involved.  The errors raised highlighted a class missing from the whitelist.  Need to write a unit test to test the class loader issue.

* Unit test for attachment class loading with kryo.
2017-03-17 12:43:11 +00:00
Andras Slemmer
c3c1f3d801 Add :node-api, factor out some artemis code 2017-03-17 11:47:05 +00:00
Ross Nicoll
486368d926 Clean up messaging/RPC port configuration and docs (#296)
* Non-ssl artemis acceptor for RPC connection. (#271)

* New non-ssl acceptor in artemis server for RPC connection.

* Rename artemisAddress with messagingAddress

Rename artemisAddress with messagingAddress so that the node configuration file properties match
the code variable names.
Rename artemisPort to messagingPort in Gradle configuration to match node configuration naming.

* Add rpcPort configuration option for Gradle

* Update docs to reflect changes to RPC port configuration

* Renumber ports in example CorDapp to match numbering used elsewhere

* Restructure upgrade guide

* added config file checks on corda startup to make the upgrade path a bit smoother.
2017-03-17 10:32:14 +00:00
Mike Hearn
eb21458885 Some fixes to emoji/ANSI renderer 2017-03-17 10:54:25 +01:00
Shams Asari
f079c05e6a Merge pull request #361 from corda/shams-nms-reg-error-response
Clean up of network map service  and its tests, and added error msg t…
2017-03-16 17:03:42 +00:00
Konstantinos Chalkias
5966610a6e DEFAULT_MAX_BUCKETS based on max heap size
MAX_DEFAULT_BUCKETS is linearly correlated to max heap size with a minimum of 256 buckets.
2017-03-16 16:40:34 +00:00
Shams Asari
5e3e7f6c1c Clean up of network map service and its tests, and added error msg to registration response 2017-03-16 16:37:21 +00:00
josecoll
391270ed71 RequeryConfiguration setting for table creation is now CREATE_NOT_EXISTS (was DROP_CREATE) (#374) 2017-03-16 16:23:37 +00:00
Rick Parker
f3a5f8e659 Pool Kryo instances for efficiency. (#352)
Pooled Kryo
2017-03-16 08:24:06 +00:00
Shams Asari
f581844f3f Flow registration takes in a Class object rather than a KClass 2017-03-15 16:32:13 +00:00
Andras Slemmer
6a6698b598 Merge pull request #339 from corda/aslemmer-fix-rpc-close-deliver-deadlock
rpc: Fix deadlock caused by deliver() and close()
2017-03-15 16:20:11 +00:00
Konstantinos Chalkias
195d69d0dc Print to screen and log basic info (#356)
Adding an extra logger to printBasicNodeInfo in both console and log file, respectively. Also, node's legal name is now printed to console as well.
2017-03-15 16:18:24 +00:00
josecoll
18e4620928 ArrayDeque FlowLogic references were not being removed on flow termination. (#353) 2017-03-14 15:25:34 +00:00
Andras Slemmer
389685a31e PR 339 Address comments 2017-03-14 15:17:15 +00:00
Andras Slemmer
60520412c8 rpc: Fix deadlock caused by deliver() and close() 2017-03-14 15:17:15 +00:00
Shams Asari
bbbc4d9eaa Fix in reading non-present manifest values in single tests 2017-03-13 18:37:16 +00:00
Konstantinos Chalkias
afd5521b00 Lazy NodeVaultService.states (#349)
Convert NodeVaultService states to return Iterable (backed by Sequence) Vs the old way using a List. Worth noting this relieves memory pressure as the number of vault states grows.

* remove toList in ContractUpgradeFlowTest
2017-03-13 14:06:47 +00:00
Mike Hearn
21f5f6d9d0 ANSIProgressRenderer: allow progressTracker to be set to null 2017-03-10 17:26:18 +01:00
Mike Hearn
5e19bad4b5 Minor: don't use a separate thread to start Metrics-to-JMX export.
This should hopefully resolve a shutdown hang due to the misnamed "WebServer" thread not being a daemon thread.
2017-03-10 17:23:43 +01:00
Shams Asari
1adc9e65ec Logging the PID and version info 2017-03-10 10:29:41 +00:00
Shams Asari
e9d63b2662 Added bits of versioning info to the node 2017-03-09 16:36:21 +00:00
Konstantinos Chalkias
4a9ff84fc7 Allowing multiple signature algorithms (#250)
Basic crypto API to support 5 signature schemes and MetaData-ed signatures.
Supported schemes: (1) RSA_SHA256, (2) ECDSA_SECP256K1_SHA256, (3) ECDSA_SECP256R1_SHA256, (4) EDDSA_ED25519_SHA512, (5) SPHINCS-256_SHA512.

To sign a transaction, a signer should create a MetaData wrapper that contains transaction's merkle root and some extra information, such as signer's public key, timestamp and visibleInputs. Actually, MetaData is utilised to support a practical partial, blind and extra-data attached signature model.
When a MetaData object is signed, the signer sends a TransactionSignature object that contains the signed output and the corresponding MetaData object.

Remarks: 
This is an temporary solution for signature algorithmic agility. Further development is required for a robust and extensible Crypto Manager/Provider PKI that will support certificate creation, key generation, signing/verifying, deterministic key derivation, encoding formats, SGX/HSM support, identity and key management, versioning, revocation, asynchronicity, metadata, partial sig. policies etc.
2017-03-08 17:45:23 +00:00
Rick Parker
dc8c6747d3 Allow escaped unsubscribed RPC Observables to be GC'd (#334)
* QueuedObservable could not leak due to hard references.  Have made it weak referenced but also had to reference count a hard reference to prevent early GC.  Explained in comments.

* Improved comments.

* Fixed typo

* Fixed another typo
2017-03-08 14:09:38 +00:00
Mike Hearn
35836d9926 Add a registeredFlows() RPC that lists the RPCs the node knows about. 2017-03-08 15:01:13 +01:00
Andrius Dagys
97b3c35ec2 Add public IP detection (from network interfaces), node outputs a warning if no public IP detected or specified in the config. 2017-03-07 17:41:23 +00:00
Chris Rankin
0e3540d174 CORDA-265: Implement "ALL" permission for RPC users. (#306)
* CORDA-265: Implement "ALL" permission for RPC users. Users with this permission in node.conf can use any flow.

* CORDA-265: Ensure that we always close the RPC proxy object after each test.

* CORDA-265: Refactor construction of dummy RPC client into an abstract base class.

* CORDA-265: Document RPC "ALL" permission.
2017-03-07 16:57:34 +00:00
Karel Hajek
1e78d6a3a7 Simple Attachment Storage implementation using Requery/H2 database 2017-03-07 16:12:38 +01:00
Andrius Dagys
907a893ca1 BFT notary prototype: add validation and signature collection (#279)
* BFT notary prototype: add a non-validating service.
Each replica now validates the transaction timestamp and returns an individual signature to the BFT client. The client then returns a list of signatures back to the notary service flow.

The validating variant is still incomplete - it requires the ability to suspend flows on arbitrary function calls.
2017-03-07 12:39:19 +00:00
Ross Nicoll
b5ba070301 Revert "Non-ssl artemis acceptor for RPC connection. (#271)"
This reverts commit f0d82e4918.
2017-03-06 14:03:23 +00:00
Shams Asari
059056de65 Removed "FLOW" from network map topic constants 2017-03-02 10:11:38 +00:00
Mike Hearn
cc61be5b6a Inform users about the newly available Corda training programs at startup and in the docsite. 2017-02-28 16:50:43 +01:00
Rick Parker
c4c4c51d7d Kryo serialisation whitelisting and misc enhancements. (#267)
Kryo serialisation whitelisting and misc enhancements
2017-02-28 08:12:18 +00:00
Clinton Alexander
8414c97a61 Moved JsonSupport to new webserver module. Fixed a few compile errors.
Fixed compile issues caused by webserver being split to a separate project.
WebServer now starts and stops correctly as a separate module.
2017-02-27 16:41:48 +00:00
Clinton Alexander
bc9f86905c Added webserver module. Moved webserver files to the webserver module. 2017-02-27 16:15:27 +00:00
Patrick Kuo
f0d82e4918 Non-ssl artemis acceptor for RPC connection. (#271)
* New non-ssl acceptor in artemis server for RPC connection.
2017-02-24 15:36:36 +00:00
Chris Rankin
d5872f4e5b Merge pull request #272 from corda/get-cash-balances
Implement RPCOp getCashBalances().
2017-02-23 16:33:35 +00:00
Qian Hong
5e3c874ebf Minor: Fix typo in ValidatingNotaryService comment. 2017-02-23 12:08:44 +01:00
Andrius Dagys
2b3200207a Node refactoring: move building advertised services before SMM initialisation - the node doesn't need to maintain a reference to a uniqueness provider anymore.
Extract parts of start() into separate methods.
2017-02-23 10:45:38 +00:00
Chris Rankin
221278197a Implement RPCOp getCashBalances(). 2017-02-22 13:57:15 +00:00
Shams Asari
7181b697a3 extraAdvertisedServiceIds config is now a list of strings, rather than a comma separated string 2017-02-21 15:21:37 +00:00
Andrius Dagys
24ae89db18 BFT server: add missing databaseTransaction statement 2017-02-20 15:34:14 +00:00
Patrick Kuo
9a0a9567f3 Make Network registration process more verbose (#251)
* Make the network registration process more verbose
* removed gradle task for building standalone jar for the certificate signing request utility
* Added a flag "--initial-registration" to the corda jar to start the registration
2017-02-20 13:22:37 +00:00
Thomas Schroeter
99721bf8f1 Implement bft-smart notary prototype 2017-02-20 12:08:22 +00:00
Ross Nicoll
3b8d696379 Add missing @Suspendable
Add missing @Suspendable to CashIssueFlow, as well as adding sanity
check to result of starting CashIssueFlow from
IntegrationTestingTutorial.
2017-02-20 10:41:31 +00:00
Clinton Alexander
539943d790 Added an openAttachment endpoint to the RPC interface and tests for the open, upload and exists attachment RPC interfaces. 2017-02-16 16:57:45 +00:00
Shams Asari
f13817efb3 ProgressTracker emits exception thrown by the flow, allowing the ANSI renderer to correctly stop and print the error (#189) 2017-02-16 12:11:38 +00:00
Ross Nicoll
ed093cdb9d Enforce separation of Party and AnonymousParty 2017-02-16 11:50:33 +00:00
josecoll
fa33336d38 Initial implementation of Vault Persistence using Requery (#191)
* Initial prototyping with Requery as a persistence replacement for Exposed/Hibernate

Applied changes following PR review by RP

Updated timestamp naming (removed committedTimestamp) and StateStatus (removed AWAITING_CONSENSUS) after discussion with RP.

Removed FungibleState and LinearState schemas (and associated tests) - awaiting Requery uni-directional relationship fix.

Added Transaction propagation such that requery re-uses any existing transaction context.

Made requery default logging configurable (disabled by default)

Nullable fields are now truly nullable (in the Kotlin and DDL sense)

Fix for SimmValuation integration test.

Workarounds applied to resolve Requery issues when sharing Transactional context.

Addressed PR review comments from MH.

Further updates following re-review by RP/MH

Further updates following additional PR review comments by RP

Minor update following additional PR review comments by RP

Optimised makeUpdate state processing code.

Resolved conflicts after rebase.

Additional Unit tests and bug fix for correct spending of multiple contract state types within a single transaction.
Required interface change to states() API to take a setOf (ContractStateClassTypes)

Minor code clean-up.

Re-write NodeVaultService consumed state makeUpdate function using SQL.

* Resolve conflict after rebase from master
2017-02-16 11:02:36 +00:00
Ross Nicoll
71babc7019 Remove use of full parties from contract states 2017-02-15 11:43:13 +00:00
Shams Asari
40dde555e7 Added --logging-level cmd line arg to set the logging level, and improved flow logging 2017-02-14 09:56:50 +00:00
Clinton Alexander
3726430e5b Removed unused imports in webserver.kt 2017-02-13 16:52:05 +00:00
Clinton Alexander
ae961a4d99 Fixed the race condition in web server startup with the keystore creation. 2017-02-13 16:42:46 +00:00
Patrick Kuo
28e83d1e66 Example code for contract upgrade using RPC. (#237)
* Added missing out modifier to UpgradedContract class
* Added ContractUpgradeFlow.Instigator to whitelist in AbstractNode
* Added test for contract upgrade using RPC
2017-02-13 15:39:48 +00:00
Andrius Dagys
a19dd55257 Pass a FilteredTransaction instead of a Signed transaction to a non-validating notary flow to preserve privacy.
This also means that the non-validating notary can service requests on the network without loading any custom plugins.
2017-02-13 14:54:46 +00:00
Ross Nicoll
98c30f6432 Remove CashFlow
Remove the CashFlow flow, replacing it with CashFlowCommand which can be used for the use-cases
with instructions passed around as an object.
2017-02-09 18:22:58 +00:00
Patrick Kuo
c054ffe719 Add support for contract upgrades (#165)
* Add support for contract upgrades
* Add interface for the upgraded contract to implement, which provides functionality for upgrading legacy states.
* Add shared upgrade command and verification code for it.
* Add DummyContractV2 to illustrate what an upgraded contract looks like.
* Add new functions to vault service to support upgrading state objects.
* Add contract upgrade flow
2017-02-09 17:14:31 +00:00
Shams Asari
50e1eb7b21 End flow if waiting for ledger commit and committer flow errors 2017-02-09 15:57:13 +00:00
Ross Nicoll
9055c9d9b0 Split CashFlow into three flows
Split CashFlow into independent CashIssueFlow, CashExitFlow and CashPaymentFlow,
so that users can be given access to one but not the other(s).

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-02-09 15:43:48 +00:00
Ross Nicoll
47d260625a Add AnonymousParty superclass of Party
Add AnonymousParty superclass of Party in preparation for anonymising parties stored in
contract states.

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-02-09 11:37:32 +00:00
Andrius Dagys
bbcaf5d98c Demo bug fixes (#217)
* Add webAddress back to NMS as it shifts the port allocation for all subsequent nodes and causes all demos to break.

* Attachment demo: fix node names

* Notary demo: fix certificate paths & ports

* IRS demo: role decider fixed to allocate roles properly. Previously it used to pick current node as the Fixer, causing both nodes to initiate the trade flow, resulting in double spend exceptions..
2017-02-07 17:18:21 +00:00
Clinton
dcd8fe915f Merge pull request #218 from corda/clint-webserverlogcleanup
Cleaned up logging in the webdriver...
2017-02-07 16:00:16 +00:00
Shams Asari
657cfa5d96 FlowException can be thrown from within UntrustworthyData.unwrap for better Java interop, and more checked exception annotations relating to flows 2017-02-06 16:00:52 +00:00
Ross Nicoll
9910ce01a3 Switch to using CompositeKey inside network map cache
Switch to using CompositeKey inside network map cache, so that look up of node info from keys
can be done in a more sensible manner.
2017-02-06 14:09:31 +00:00
Mike Hearn
2f378f0e15 Minor: suppress deprecation warning in CordaRPCOpsImpl 2017-02-06 12:29:34 +01:00
Mike Hearn
cc20a10225 Improve the flow commit API.
Make FinalityFlow do more, and be used more consistently.

Add a new waitForLedgerCommit API that is intended to be used at the end of flows, or at any other point where a flow wants to wait for a transaction to finalise (but the finalisation flow is being done by someone else).

Update the docs a bit.
2017-02-06 12:29:34 +01:00
Clinton Alexander
0ae681de76 Cleaned up logging in the webdriver to remove log that fails to display correctly on Windows. 2017-02-03 14:00:49 +00:00
Shams Asari
b86c80691e FlowException serialised over RPC (subtypes are flattened), and improvement to startFlow RPC for correct exception handling 2017-02-03 11:21:10 +00:00
Andrius Dagys
56dbf1e844 Prevent node from starting across upgrades (until we support it better) (#199)
* Prevent node from starting across upgrades (until we support it better).

On first run a version file is created in the node dir, and on subsequent runs the node version is matched against it.

* Move version check from caplet to node.
2017-02-02 18:21:00 +00:00
Ross Nicoll
bc9407d2c8 Correct network map cache tests
InMemoryNetworkMapCacheTest was not actually asserting that an expected exception was thrown, which
meant when earlier changes to the service changed the operation it wasn't caught. The service now
overwrites previous node if a new matching node is added, and this updates the test to follow that
design.
2017-02-02 16:01:10 +00:00
Ross Nicoll
2f9af7d7dc Revert Party.Full in preference for a less invasive change 2017-02-02 13:47:32 +00:00
Andras Slemmer
4afd404db4 Address PR 207 comments 2017-02-02 11:44:18 +00:00
Andras Slemmer
de63f90745 Add isRegisteredWithNetworkMap RPC, poll in Driver, expose RPC proxy 2017-02-02 10:54:50 +00:00
Shams Asari
3f6c8ab1e2 Allow received FlowException to propagate further to initiating flow 2017-02-01 17:30:38 +00:00
Ross Nicoll
1b86ddfd6e Replace Party with Party.Full
Replace Party with Party.Full as an interim step to introducing the Party.Anonymised class.

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-02-01 15:18:12 +00:00
Clinton
d376a902ad Merge pull request #180 from corda/clint-webserversplit
Split webserver from node
2017-02-01 12:13:31 +00:00
Patrick Kuo
7f96b752d1 Added reconnect capability to RPC (#192)
* Added reconnect capability to RPC
* Issue - https://github.com/corda/corda/issues/184
* JIRA - https://r3-cev.atlassian.net/browse/CORDA-189
2017-01-31 17:04:05 +00:00
Clinton Alexander
876bae67cb Added TODOs for future splitting of the web server from the node. 2017-01-31 16:03:34 +00:00
Shams Asari
646ce8afe0 FlowException thrown by a flow is propagated to all counterparties 2017-01-31 13:30:33 +00:00
Patrick Kuo
e8015e689a Flows shouldn't have to suspend if just doing a send (#187)
* CORDA-45 Flows shouldn't have to suspend if just doing a send
2017-01-30 16:21:43 +00:00
Ross Nicoll
e383752995 Adapt Party comparison to use owningKey
Change Party instances to be uniquely identified by the owning key, without taking into account name.
This requires that mock node key generation is reworked so that keys for services and the node itself
are distinct, otherwise the network map service cannot differentiate them.

Signed-off-by: Ross Nicoll <ross.nicoll@r3.com>
2017-01-30 15:46:51 +00:00
Richard Green
e54d6388fd Adding optional delay to AMQ message sending via system properties (#185) 2017-01-30 14:39:40 +00:00
Clinton Alexander
a5f6fb9479 Querying of node and webserver now uses infinite retries to avoid any race conditions. 2017-01-30 12:08:41 +00:00
Clinton Alexander
d2ebcbfab0 Fixed whitespace and formatting with IntelliJ autoformat tool. 2017-01-30 12:05:22 +00:00
Clinton Alexander
65b29a8379 Moved the transaction context into the RPC call site. 2017-01-30 11:21:01 +00:00
Clinton Alexander
3482452c8b Added webserver to runnodes. 2017-01-27 14:15:08 +00:00