Commit Graph

1035 Commits

Author SHA1 Message Date
Shams Asari
faef877a8d Converted sealed data types to be data classes 2017-04-04 11:37:56 +01:00
Clinton Alexander
6768a83232 Readded the debug port to the driver and added a log entry for the debug port. 2017-04-04 10:28:18 +01:00
Konstantinos Chalkias
dbd82705aa Artemis - allow attachments to a maximum of 10MiB including any headers. (#452)
Allow attachments to a maximum of 10MiB including any headers.
2017-04-03 18:42:21 +01:00
josecoll
413e39903d Fixed bug whereby Cash Exit was not taking into account the issuer reference (#492)
* Fixed bug whereby Cash Exit was not taking into account the issuer reference.
Added additional JUnit tests for coin selection by issuer.
Added some trace logging in AbstractConserveAmount.

* PR review: added additional state with 3rd issuer reference in test.
2017-04-03 17:51:56 +01:00
Shams Asari
e0c548d4fa Cleaned up code causing build warnings 2017-04-03 13:52:51 +01:00
Ross Nicoll
30dd29752c Clarify exceptions thrown from loading a key store
Clarify exceptions thrown from loading a key store as a general cleanup. Also tightens the
exceptions caught when loading key stores from AbstractNode, so in case of an unexpected error
we don't silently drop the exception.
2017-04-03 13:41:40 +01:00
Andrius Dagys
846d9caa09 Add non-validating Raft notary 2017-03-31 11:58:53 +01:00
josecoll
73c0fdc118 CashExitFlow now uses coin selection with soft locking. (#481) 2017-03-31 11:47:59 +01:00
Chris Rankin
f15a22d828 Replace kotlinx-support-jdk8 with kotlin-stdlib-jre8. (#463)
* Replace kotlinx-support-jdk8 with kotlin-stdlib-jre8.
* Add kotlinVersion to constants.properties.

* Remove unused variable.
2017-03-30 16:27:01 +01:00
Mike Hearn
577b2c2c22 CORDA-319: Shell: use ExternalResolver to load our commands
This eliminates JIT java compilation and the consequent need for
tools.jar (which doesn't get shipped in DemoBench). It also makes
development more pleasant by avoiding weird IDE integration issues
that came from having java-in-resources.
2017-03-30 14:58:59 +02:00
Patrick Kuo
78a0024e00 Fix various deprecated warnings
* Changed deprecated kotlin.reflect.primaryConstructor to kotlin.reflect.full.primaryConstructor
* Changed deprecated kotlin.reflect.memberProperties to kotlin.reflect.full.memberProperties
* Changed deprecated kotlin.reflect.declaredMemberProperties to kotlin.reflect.full.declaredMemberProperties
* Changed deprecated AllComposition to AllOf
* Changed deprecated AnyComposition to AnyOf
* Changed deprecated kotlin.reflect.KotlinReflectionInternalError to kotlin.reflect.jvm.internal.KotlinReflectionInternalError
* Changed deprecated HostAndPort.hostText to HostAndPort.host
* Removed duplicated method net.corda.core.node.recordTransactions
2017-03-30 10:00:46 +01:00
Patrick Kuo
9a7d0a0fb5 Replace unused variables with _ after kotlin 1.1.1 upgrade (#456)
* Replace unused variables with _ after kotlin 1.1.1 upgrade
2017-03-29 13:54:40 +01:00
josecoll
7eada1408e Reduce warning and info messages in node log files (Artemis) (#449)
* Reduce warning and info messages in node log files (Artemis)
Add an additional lof message for conflicting states identified by the Notary.

* Upgraded severity of user login message from trace to debug.

* Suppress Artemis log4j WARNING's for core.server.checkDeadLetterAddressAndExpiryAddress
2017-03-29 11:40:19 +01:00
josecoll
3497e42f7c Upgrade to Requery 1.2.1 with Composite Key support (#443)
* Test SELECT WHERE IN composite key using requery 1.2.0

Upgraded Vault Service code to use Requery 1.2.0 SELECT .. WHERE IN

Updated generated schema code with Requery 1.2.0

Upgrade to Requery 1.2.1

Upgrade to Requery 1.2.1 - converted to use update DSL with composite key
Removed redundant JDBC SQL test cases.

Minor updates following PR review comments from RP.

* Streamline companion object initialisation.
2017-03-29 10:51:02 +01:00
josecoll
bafedc21e2 Display Corda node legal name in JVisualVM Console for MockNode testing. (#444)
* Display Corda node legal name in JVisualVM Console for MockNode testing.

* Removed dash in displayed corda node name.

* Reinstated the dash in displayed corda node name (as JVisualVM does not parse the space correctly)
2017-03-29 09:22:01 +01:00
Patrick Kuo
6ca0dffa6c use sshdPortAllocation for sshdAddress instead of portAllocation to fix broken demos due to port shift. 2017-03-29 10:15:14 +02:00
Matthew Nesbit
b75913c24a Merge pull request #451 from corda/mnesbit-fix-flaky-tests
Fixes some charset encoding and timing tests problems on windows
2017-03-28 18:21:29 +01:00
Matthew Nesbit
8f1d58a508 Fix unit tests causing problems on windows 2017-03-28 16:39:29 +01:00
Clinton Alexander
252195672b Corrected driver documentation. 2017-03-28 16:18:33 +01:00
Clinton Alexander
48832d44fa Added verifier type to JavaDoc for startNode 2017-03-28 12:27:34 +01:00
exfalso
81dcde99bf #340: Factor out jvm process start into utility function 2017-03-27 17:42:51 +01:00
Andras Slemmer
48952dfc02 Add node-api, split minimal node functionality, OutOfProcessTransactionVerifierService 2017-03-27 17:42:51 +01:00
josecoll
0280299104 Soft locking implementation using database coin selection
Fix broken IssuerFlowTest

Fix IssuerFlowTests after rebase.

Resolve conflicts after rebase.

Soft locking converted to use persistent store.
Added additional optional 'includeLockStates' parameter in VaultService states API call.
Added Vault softLocked states query API call.

Fixed commercial paper failing test.
Improved exception handling on soft locking UPDATE statement.

Using SELECT FOR UPDATE to ensure correct soft locking data visibility.
Db query operations moved out of mutex code (as locking managed by underlying DB)

Adjusted logging severity levels.

Adjusted logging severity levels.

GenerateSpending now performing fine grained query for unconsumed states by joining with contract_cash_states table.
Using H2 proprietary cummulative counting feature (using sessioni SET variables)
Refactored and simplified HibernateObserver constructor to enable usage in JUnit tests.

Event generator issues larger random amounts (10,000..1,000,000) to those than are spent (0..10,000)
Adjusted Issue (5:1) and Exit (10:1) generation frequency vs spending.

Minor fixes: added optional lockid into select for spending criteria, set notary, additional trace logging.

Generate Cash Schema by default upon node start-up (as part of NodeSchemaService initialisation).

Explicitly close JDBC statements in finally() blocks.

Tightened HibernateObserver constructor.

Fix CommercialPaper test (was missing auto-generation of CONTRACT_CASH table)

Revert default JVM size back to 200Mb.

Revert default number of iterations in Explorer Node Simulation mode (back to 10000 with .5 sec sleep interval).

Remove redundant setter function.

Added TODO messages indicating Requery / H2 restrictions & caveats.

Consumed states lock updates now performed in general consumed state Update.

Updated/added Soft Locking documentation.

Addressed initial PR comments: use THREAD_LOCAL_KRYO, use AbstractParty, extract helper method, improve readability, address some doc typos

Addressed PR comment: removed lockId from WireTransaction.

Fixed soft locking UPDATE statements.

Improvements to VaultSoftLockManager for auto-registration of soft locks for flows with spendable states (as notifications from vault).
Other optimisations (IssuerFlow no longer explicitly reserve/release issued state) and improvements (soft lock release management of soft locks, docs update)

Performance update: now using Requery for UPDATE in release soft locking (non-composite key statement)

Removed redundant TODO messages (TODO: revisit Kryo bug when using THREAD_LOCAL_KYRO)

Minor fixes following rebase

Fixed failing JUnit following rebase

Addressed MH PR review items (1st pass)

Fix broken JUnit

Significant changes to RDBMS operations within coin selection and soft locking as requested by PR review.
(Removed SELECT FOR UPDATE; added RETRY upon coin selection; reverting partial soft locks)

Addressed a number of PR review requests added by MH (comments/spelling, lockID instantiation, HibernateObserver instantiation, cash schema white-listing usage)

Addressed latest PR review comments from RP.

Minor fixes following rebase from master.

Fixed final failing JUnit (issuer flow concurrent).

Updated TraderDemo to trigger concurrent issuance of cash.

Fixed compiler warning on lockId null check.

Fixed subtle bug in coin selection intermittently surfaced in IntegrationTestTutorial.

Fixed small memory leak.

Removed stray } in logger trace message.

Slight rewording of description of Soft Locking in docs.

Renamed NoStatesAvailableException to StatesNotAvailableException.
generateSpend is now Suspendable (calls sleep method on flow upon coin selection retry).

Added companion function to enable a Strand to sleep but without locking transactional context.

Improved logging, changed to StateNotAvailableException, using Flow sleep upon retry, tweaked SELECT criteria in coin selection, fixed bug when insufficient states selectable, generateSpend is now @suspendable

Improved handling and logging of flow results in Simulation Mode.

Fixed minor error in sleep when not an active flow.

Retry coin selection when unavailable states (as these may become available as new states).
Additional debug logging to highlight and identify H2 coin selection sporadic bug.

Inlined sleep method due to intermittent Quasar error.

Re-introduce selection clause that prevents selection and temporary locking of already locked states (by other flows).
Improved trace logging for coin selection (SQL row level info).
Correctly calling FlowStateMachineImpl sleep (now inlined and working correctly)

Fixed rebase error.

Remove redundant TODO message.
2017-03-27 17:12:33 +01:00
Shams Asari
bb74f0ca34 Merge pull request #427 from corda/shams-consistent-guava-deps
Upgraded both guava and guava-testlib to 21.0 and made sure they shar…
2017-03-24 18:30:11 +00:00
Ross Nicoll
c3cf2226ea Extend identity service tests
RBS report problems with multiple nodes being able to find each other in the identity service. This extends the name
lookup test case to try three nodes, to check all of the stored values, and to use random keys rather than static.

Add trace log of identity registrations to aid with tracking state.
2017-03-24 18:25:49 +00:00
Shams Asari
52ea54f742 Upgraded both guava and guava-testlib to 21.0 and made sure they share the same version variable 2017-03-24 17:17:36 +00:00
Mike Hearn
68ff33549a Address review comments 2017-03-24 12:44:54 +01:00
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
Clinton Alexander
13551a6b23 Runnodes now works with the new separate webserver. 2017-01-27 14:14:38 +00:00
Clinton Alexander
537ffae113 Moved file uploading to RPC interface. 2017-01-27 14:13:58 +00:00
Clinton Alexander
d4b6e32682 t # This is a combination of 5 commits.
Driver now queries webserver to ensure it has started.
2017-01-27 14:13:29 +00:00
Clinton Alexander
5f4d4c1da3 Moved the webserver code into the main node module. Driver can now start webserver for nodes. 2017-01-27 14:12:54 +00:00
Clinton Alexander
ecfb762143 Nodes can start without web server. Webserver now uses full node configuration. 2017-01-27 14:12:19 +00:00
Clinton Alexander
fa257738e1 Added webserver project. 2017-01-27 14:10:18 +00:00
Shams Asari
20fe0f32f2 Removed "Node" prefix from NodeSSLConfiguration and renamed two file properties to end in "File" 2017-01-23 15:46:36 +00:00
Shams Asari
052a660c1b Making sure exceptions thrown while fibers are suspended are handled properly 2017-01-23 15:39:55 +00:00
Andrius Dagys
e9345e2999 Set h2 write delay to 100ms to improve performance 2017-01-20 12:03:00 +00:00
Patrick Kuo
aeb5a59605 Add logging to node startup when it attempt to connect to the map server (#167)
* Add logging to avoid node startup "hang" when it attempt to connects to the network map, also can use as a hint telling user Network map might be down or unreachable.
2017-01-20 11:34:32 +00:00
Shams Asari
c4e3b258c7 Introducing Observable.toFuture() extension method 2017-01-17 12:56:59 +00:00
Andrius Dagys
ca1b08ad37 Node memory leak fix (#152)
Perform Artemis message sending in a separate thread pool to avoid memory leaks
2017-01-13 18:29:56 +00:00
Mike Hearn
ef6e9786a8 Cleanup: improve api docs on FlowLogic, make it clearer when stuff is considered internal, rename an obscurely named field. 2017-01-12 13:30:10 +01:00
Mike Hearn
d26c44d08c Configure Capsule/Driver to give Corda a relatively poxy 200mb heap by default: we don't seem to need more for development purposes. Switch to G1GC by default as well. 2017-01-12 11:37:10 +01:00
Rick Parker
354977ffea Fix intermittent failure in ScheduledFlowTests (#140)
Allow a single latch for all activity in the MockNetwork
2017-01-12 09:54:08 +00:00
Shams Asari
e589031d4b Some clean up of the flow code 2017-01-11 16:33:59 +00:00
Shams Asari
7cd281364f Removed basedir from the config file as it's always overwritten by the --base-directory cmd line arg 2017-01-10 10:49:28 +00:00
Shams Asari
334b91faf0 Testing that a node can communicate with a distributed service it's part of 2017-01-09 17:21:51 +00:00
Mike Hearn
78a6daa985 Minor: log RPC/peer logins 2017-01-06 16:39:01 +01:00
Mike Hearn
32523d376e RPC: Improve the client class with a convenience function and some startup time logging.
This reveals that building the first RPC client is ludicrously slow (like 1.8 seconds) but subsequent builds are more like 30 msec. This might be interpreter overhead, or it might be due to Artemis/SSL doing lots of piggy lazy initialisation or something. But at any rate it may be worth investigating a bit later.
2017-01-06 16:39:01 +01:00
Mike Hearn
20dbdf9d1b Make SSL optional in the RPC client 2017-01-06 16:39:01 +01:00
Shams Asari
59456cb6b1 Added a method to NodeHandle to simplify using RPC in the Driver 2017-01-06 14:14:32 +00:00
Rick Parker
592ac07af0 Upgrade reactivex.rxjava version to latest 1.x (#111)
Update rxjava version and fix thread safety of database transaction boundary subject.
2017-01-06 10:26:44 +00:00
Shams Asari
08e391579c Node verifies the peer it connects to by checking its TLS common name 2017-01-05 14:22:11 +00:00
Mike Hearn
875efbfa11 Merge pull request #106 from corda/mike-thread-affinity-for-smm
Additional thread affinity for the StateMachineManager.
2017-01-05 11:03:35 +01:00
Clinton
d9663f1698 Merge pull request #72 from corda/clint-simmdemointegrationtest
Add SIMM valuation demo integration test
2017-01-04 15:32:44 +00:00
Mike Hearn
1a53834a60 Additional thread affinity for the StateMachineManager.
Check that the SMM.add method is being called on the SMM thread and throw if not. Make ServiceHubInternal.startFlow() do a blocking call onto the server thread. Update unit tests.

This resolves an issue whereby the scheduler was starting flows outside of the server thread, which isn't intended.
2017-01-04 16:06:33 +01:00
Shams Asari
e34f33785f Prevent the node from starting if running on a version of Java with the empty Path bug (#83) 2017-01-03 10:42:18 +00:00
josecoll
021bcb0628 Merge pull request #92 from corda/colljos-fix-issue88
Fixed issue caused by race condition in process registration v node e…
2016-12-23 15:20:16 +00:00
josecoll
b4a5a03992 Fixed issue caused by race condition in process registration v node exit.
See https://github.com/corda/corda/issues/88
2016-12-23 15:09:13 +00:00
Andrius Dagys
2e29673392 Distributed notary: manually initialize the serializer for copycat server & client. This fixes the issue where one of the nodes is unable to connect to the cluster. 2016-12-23 12:52:04 +00:00
josecoll
eac2cb1cc6 Bank of Corda integration with Trader Demo and Explorer
Initial conversion of Explorer to use IssuerFlow (from BankOfCorda)

Initial conversion of TraderDemo to use IssuerFlow (from BankOfCorda)

Updated TraderDemo to use IssuerFlow (from BankOfCorda)

Fixed TraderDemo integration text (added new BankOfCorda node)

Updated Explorer with changes IssuerRequest params

Explorer now correctly displaying transaction id upon Issue.

Moved IssuerFlow into finance package so can be reused across multiple demos (TraderDemo) and applications (eg Explorer)

Refactored BankOfCorda demo to use Finance package and TestUtil constants

Updated TraderDemo to use IssuerFlow

Updated Explorer to use finance package IssuerFlow.

Advertised BankOfCorda as Issuer for usage by Explorer.

Explorer no longer depends on BankOfCorda demo since IssuerFlow promoted to Finance module

Added IssuerFlow to AbstractNode whitelist.
Explicit declarations of IssuerFlow no longer required.

Added plugin registration of IssuerFlow at bootstrap.

Revert whitelisting of IssuerFlow (plugin configured)

Refactored to use constant BOC definition.

Added gradle RPC security config.

Updated documentation

Fixed incorrect references.

Renamed Issuer banks.
Added new permission set (for Issuer nodes)
Added node nearestCity info
Added new Issuer Event Generator for Issuer nodes only

Associated currency with issuer using ServiceType naming structure.

Added argument flag (-S) to trigger event generator simulation node.

Fixed problem with issuers not resolving from network map.

Updated perms on Issuer rpc proxy nodes.

Fixed minor in cash generateExit identified by Explorer.

Changes applied in prep for AWG demo.

Added IntelliJ run-configurations for launching Explorer demo nodes (with and without simulation)

Updated documentation (and added additional gradle task to launch Explorer nodes in simulation mode).

Fix following rebase.

Addressed review items from PR.

Updated TraderDemo readme.

Updated TraderDemo gradle file to launch Bank of Corda node.

Updated JRE properties.

Updated IssuerModel to incorporate correct JFX Observable handling.
Fixed bug with Exit command not displaying any currency.

Added TODO's for revisiting correct Exception handling strategy.

Optimization for when issuing cash to self.

Minor updates following PR review.

Remove old refs to Royal Mint and Federal Reserve
2016-12-22 15:55:50 +00:00
Shams Asari
924fb479e4 Cleaned up DistributedNotaryTests, including addressing overlap with RaftValidatingNotaryServiceTests 2016-12-22 12:49:33 +00:00
Mike Hearn
edc648ae95 Wish our users a merry Christmas and a happy new year. 2016-12-22 11:37:27 +01:00
Rick Parker
bd979534f3 Add database transactions back onto observations. (#77)
Add database transactions back onto Observables now that they are post database commit.
2016-12-22 10:03:22 +00:00
Andras Slemmer
7d9caa984b node: Driver network map starts parallel with other nodes, uses executor service, pre-create most artemis queues 2016-12-20 14:49:55 +00:00
Shams Asari
81d1459599 Fixed bug where messages can't be sent to services running on the network map node (#71) 2016-12-20 12:03:21 +00:00
Clinton Alexander
3c2610613f Integration test uses better naming sceme. Json support module cleaned up to use Kotlin features. 2016-12-19 16:26:54 +00:00
Andrius Dagys
6f3ed327a0 Vault: return a list of unconsumed states rather than a sequence. The lazy evaluation captures some extra context, serialization of which in flows results in errors. 2016-12-16 15:48:48 +00:00
Clinton Alexander
fa1e7cfa15 Corda JSON module now created in a separate function to the default mapper. 2016-12-16 14:51:12 +00:00
Clinton Alexander
234ffb141c Fixed issues with incorrect serialisation in test utilities. 2016-12-16 12:11:26 +00:00
Mike Hearn
f44dd969ce Fix ANSI logging on Windows 2016-12-15 21:00:45 +01:00
Joel Dudley
334ed4806b Adds overload anotations and reorganizes param orders to improve java interop. 2016-12-15 18:27:41 +00:00
Andrius Dagys
7cb4cbcad4 Made vault updates contain full StateAndRef in the consumed set (instead of just StateRef). This allows subscribers to check whether the update contains relevant states.
Cash balances are now calculated by keeping only the aggregate values (it no longer needs to iterate through all states in the vault).
2016-12-15 16:27:39 +00:00
Andrius Dagys
673b0393b4 Increase JDBCHashMap default bucket size. With the current implementa… (#58)
Increase JDBCHashMap default bucket size. With the current implementation of the Vault, once the number of stored transactions (or UTXO) goes over the max bucket size we end up reloading each transaction from the db and deserializing it, which causes severe performance degradation.
2016-12-15 15:45:51 +00:00
exfalso
53bbb57345 Add ReceivedSessionMessage, DriverBasedTest re #57 2016-12-15 11:37:15 +00:00
Andras Slemmer
a3138ab0dc Address PR comments 2016-12-15 11:37:15 +00:00
Andras Slemmer
4f44962962 Add kdocs on service addressing 2016-12-15 11:36:06 +00:00
Andras Slemmer
6a796cef35 Add raft notary integration tests, testing service addressing 2016-12-15 11:36:06 +00:00
Andras Slemmer
7ee88b6ec8 Add SMM test for round robin node picking 2016-12-15 11:36:06 +00:00
Andras Slemmer
fd436b0cdc artemis, sessions, mock: Add Service addressing, tests pass 2016-12-15 11:36:06 +00:00
Shams Asari
7afa3346d6 Updated docs and TODOs to be inline with recent changes to the doorman 2016-12-13 17:03:15 +00:00
Andras Slemmer
09e11f8435 rpc-kryo: Kryo register hidden jar url inputstream class 2016-12-13 11:51:14 +00:00
Patrick Kuo
a4201c7152 This fixes the node startup issue - https://github.com/corda/corda/issues/37 (#48)
* Create missing artemis bridge when node is added to the network map
* Added integration test for this issue
* addressed PR issues
2016-12-12 13:29:31 +00:00
Shams Asari
9d98673c66 Added commonName extension method to X500Name and helper class for x509 cert factories 2016-12-09 17:13:00 +00:00
Joel Dudley
ae349a8831 Adds todos that will improve java interop. 2016-12-09 14:30:52 +00:00
rick.parker
b52c52378f Move Future completion outside database transaction so that the effects of the flow will be externally visible at Future completion. 2016-12-09 09:21:59 +00:00
rick.parker
0378b8d785 Buffer observations until database commit. 2016-12-08 16:32:45 +00:00
Mike Hearn
5f603a94f0 Minor: add a TODO 2016-12-08 14:06:32 +00:00
Andras Slemmer
4fe1d48e4a demos: Fix demo RPC serialisation after rebase 2016-12-08 11:58:31 +00:00
Andras Slemmer
9117ec9860 Simplify InputStreamSerializer, make NODE_USER role explicit 2016-12-08 11:58:31 +00:00
Andras Slemmer
a601f0abf5 Local RPC, demos use RPC, NODE has special privileges 2016-12-08 11:58:31 +00:00
Matthew Nesbit
f63e6cd2a6 Add some hooks to StateMachineManager and NodeSchedulerService so that unit tests of flows with scheduled actions can safely test for completion of their test activities. Typically this is done using a while loop whilst there are active fibers, or schedules and then blocking on the ReusuableLatches until the status changes and can be re-evaluated.
Add unit tests of ScheduledFlow running on simulated network.

Just use existing DumyContract in test

DummyContract requires value equality so that assertEquals over states works as expected.

Remove blank line.

Add TODO on waitQuiescent.

Fix minor build error
2016-12-07 16:11:55 +00:00
Joel Dudley
03b5e9bced Address review comments. 2016-12-07 14:15:20 +00:00
joeldudleyr3
432015ddfe Adds JvmName annotations where necessary to improve interop when developing CorDapps in java. 2016-12-07 12:12:18 +00:00
Andras Slemmer
fd229df956 node: Add ClassSerializer, register default flow parameters for RPC 2016-12-06 13:55:18 +00:00
Matthew Nesbit
99219c6a5f Allow cordapp types to be used in parameters to cordapp startFlowDynamic RPC calls.
Add missing registration.
2016-12-05 16:57:22 +00:00
Shams Asari
10360ae8cf Converted MapChange into a sealed data structure so that only Modified has the previous node property 2016-12-05 10:04:31 +00:00
Shams Asari
4addb91f80 Added security to RPC and P2P systems. 2016-12-02 18:11:08 +00:00
Shams Asari
5432905b4a Clean up NetworkMapCache and InMemoryNetworkMapCache 2016-12-02 14:45:54 +00:00
Mike Hearn
7b40be8361 Run the IntelliJ reformatter across the Kotlin code. Did not reformat JS/web code. 2016-11-30 14:40:34 +00:00
Andrius Dagys
8e836bc279 Distributed notary: configure Raft client retry to avoid race conditions 2016-11-29 11:07:22 +00:00
Andrius Dagys
4c6625559f Merged in andrius-dep-cleanup (pull request #569) 2016-11-28 18:28:28 +00:00
Ross Nicoll
f5ecddb4b2 Add get() method to identity service 2016-11-28 18:01:03 +00:00
Andrius Dagys
ef598d926f Include only required atomix dependencies. 2016-11-28 15:51:31 +00:00
Jose Coll
bc3550e3e6 Merged in colljos-kryo-observable-registration (pull request #544)
Kryo registration of Observable with explicit ID.
2016-11-28 13:31:51 +00:00
Andras Slemmer
811b0e6a8d Merged in aslemmer-warn-on-double-tx-record (pull request #546)
Check for duplicate transaction records
2016-11-28 10:34:34 +00:00
Andrius Dagys
946cfda03e Added a distributed notary demo that runs a notary cluster and gets several transactions notarised 2016-11-25 17:09:57 +00:00
Andrius Dagys
758ab6d359 Extended Driver api to allow custom config overrides. Added helper methods for creating a distributed notary cluster. 2016-11-25 17:09:57 +00:00
Andras Slemmer
44d1b79ef9 docs: Address PR 513 comments 2016-11-25 15:33:04 +00:00
Mike Hearn
aa629f74ca Change startup message of the day 2016-11-25 14:30:40 +01:00
Andras Slemmer
87bd97d0c7 Check for duplicate transaction records 2016-11-24 18:00:04 +00:00
Patrick Kuo
cd34f3ae16 Merged in pat-explorer-more-changes (pull request #505)
Pat explorer more changes
2016-11-24 17:47:01 +00:00
Patrick Kuo
fbf952a1ab Explorer corda branding 2016-11-24 15:46:50 +00:00
Jose Coll
f6f896d072 Kryo registration of Observable with explicit ID. 2016-11-24 15:39:08 +00:00
rick.parker
b20baff54c Remove race condition and intermittent logged error at node start up regarding "Queue created for a peer that we don't know from the network map". 2016-11-24 13:14:07 +00:00
rick.parker
f68529d1fd Rename protocol to flow. 2016-11-22 17:17:14 +00:00
Mike Hearn
6aa5f0a4b5 Minor: better plugin name printing in the banner 2016-11-22 15:04:15 +01:00
Mike Hearn
a70136f775 Minor: fix startup time calculation, fix demos to print things to stdout instead of log.info 2016-11-22 12:41:05 +01:00
Andrius Dagys
93505d5e2e Merged in andrius-rename-bits (pull request #508) 2016-11-22 08:26:37 +00:00
Mike Hearn
235cee6727 Add a startup banner and suppress console logging unless --log-to-console is passed on the command line. 2016-11-21 16:08:36 +01:00
Andrius Dagys
64299591c3 Rename PublicKeyTree -> CompositeKey and unify terminology across documentation. 2016-11-21 14:47:19 +00:00
Andrius Dagys
635ee8df79 Rename bits -> bytes, as it normally indicates a byte array 2016-11-21 13:02:27 +00:00
Andrius Dagys
0d56846b1b Added a distributed notary that uses the Raft consensus algorithm (implemented by Copycat).
The notary operates by storing committed input states in a map state machine which is replicated across the Copycat cluster.
2016-11-18 18:13:19 +00:00
rick.parker
6abb5750bf RPC Kryo plugin functionality. 2016-11-18 17:38:05 +00:00
rick.parker
5c1d81824e LRU for JDBCHashMap loadOnInit=false, with tests. 2016-11-18 11:22:25 +00:00
Jose Coll
876b17bb12 Transaction notes now stored individually per row. 2016-11-17 17:57:07 +00:00
rick.parker
996b2d13d5 Network map message filtering. Removal of pending messages. Needs cleaning up. 2016-11-17 17:11:10 +00:00
Jose Coll
1427baf797 Transaction note retrieval now using indexed field on database table. 2016-11-16 14:07:16 +00:00
Jose Coll
5dfffb1b84 Re-applied changes following net.corda rebase. 2016-11-16 14:07:16 +00:00
Richard Green
d65ff747b3 Merged in clint-capletfix (pull request #466)
Fixed classpath augmentation for plugins.
2016-11-16 10:39:27 +00:00
Andras Slemmer
07df9f17b3 loadtest: Add loadtest code 2016-11-15 17:21:26 +00:00
Andras Slemmer
dcd7a8a08a Address PR 465 comments 2016-11-15 16:51:07 +00:00
Andras Slemmer
7f0dd1ab5b Generic startProtocol and typesafe wrappers, per-protocol permissions, CashProtocol, remove executeCommand, move almost all Cash-related things to :finance 2016-11-15 16:46:37 +00:00
Andrius Dagys
e261167343 Merged in andrius-servicename-gen (pull request #475)
Allow specifying advertised service identity name in configuration, generate a name if none specified
2016-11-15 14:33:02 +00:00
Shams Asari
c326a9ae46 Moved the RPC user config out of the properties file and into the main config file 2016-11-15 12:52:08 +00:00
Andrius Dagys
73bc841b7c Allow specifying advertised service identity name in configuration, generate a name if none specified 2016-11-15 11:12:24 +00:00
Andrius Dagys
d855b10817 Nodes part of a group identity (e.g. notary) now advertise the whole group Party on the network. When sending a message to a group, a representative node advertising the group identity is first chosen (at random), and its legal identity is used for communication. Currently we assume that a single legal identity can't be advertised by more than one node (the PublicKeyTree of an identity is used for Artemis queue names and we need to do more work to properly map a single queue to multiple nodes) 2016-11-14 14:57:16 +00:00
Andrius Dagys
c33c55eb20 Replace PublicKey with PublicKeyTree in Party. A single entity can now be identified by more than one key. 2016-11-14 14:57:16 +00:00
Clinton Alexander
e3f685f674 Fixed classpath augmentation for plugins. 2016-11-10 18:07:11 +00:00
Mike Hearn
ce99f354cb Rename com.r3corda -> net.corda 2016-11-10 17:14:24 +01:00
Rick Parker
af8859ebf1 Merged in parkri-protocol-error-handling-fix (pull request #447)
Fix handling of node shutdown so protocols don't blow up when they encounter the messaging layer already shutdown.  Protocols will also stop resuming once shutdown has commenced.
2016-11-08 18:15:35 +00:00
rick.parker
fe6bf0e6ea Implement controlled stop of StateMachineManager. 2016-11-08 17:53:43 +00:00
Mike Hearn
686b53f768 Fix Cordapp docs which don't use the right gradle syntax. Minor tweaks in AbstractNode 2016-11-08 15:40:44 +01:00
Andras Slemmer
51e86e7cd3 node: Small cleanup 2016-11-08 11:20:10 +00:00
Matthew Nesbit
1c39780c22 Handle the timeout exception, which can happen if the scheduler overruns (e.g. during debugging, but also potentiallyu with slow callbacks). 2016-11-07 09:56:38 +00:00
Shams Asari
bd89da458b Added nice extension methods for Path, which are more readable than the static methods from Files 2016-11-04 15:36:14 +00:00
rick.parker
143e3a063f Pending redelivery table name prefix added in line with other tables.
No longer delete all pending messages from the database and move into memory before putting back into the database again, which is vulnerable to failure.  Now we delete individual pending messages on successful redelivery.
2016-11-04 10:22:14 +00:00
Patrick Kuo
7f8608c981 Changing UI layout 2016-11-03 11:39:24 +00:00
Shams Asari
6d39b71bf9 Simple RPC access control, with a demo control on the cash RPCs 2016-11-03 10:46:25 +00:00
Jose Coll
1d25d23b73 Merge from master 2016-11-02 14:20:51 +00:00
Jose Coll
012dc9ec10 Merge branch 'master' into colljos-vault-code-clean-up-refactor 2016-11-02 11:20:21 +00:00
Jose Coll
a38b363e9d Fixed subtle bug in Cash Spending when processing for same Issuer with multiple refs. 2016-11-02 11:15:09 +00:00
Ross Nicoll
f26813c1ab Merged in rnicoll-cache-key-collision (pull request #425)
Error if multiple nodes match a key
2016-11-01 18:14:23 +00:00
Jose Coll
7e3c00c1ff Merged in colljos-pluginservicehub (pull request #427)
Added PluginServiceHub for use by Corda plugin service extensions.
2016-11-01 17:12:52 +00:00
Jose Coll
e449ba93c4 Minor fix following rebase to incoporate Ross changes to CashState definition. 2016-11-01 16:29:21 +00:00
Ross Nicoll
b4ee47bd33 Error if multiple nodes match a key
InMemoryNetworkMapCache.getNodeByPublicKey() previously returned null if multiple nodes matched
a given public key (for example if the same node is registered more than once with different
names). This is incorrect behaviour, as there is a match.
2016-11-01 16:27:54 +00:00
Ross Nicoll
e6a0f18436 Add diagnostics for web server and API plugin instantiation 2016-11-01 16:22:49 +00:00
Jose Coll
253a70f55e Fixed bug in generateSpending whereby Issuer Ref was not being checked. 2016-11-01 16:12:19 +00:00
Ross Nicoll
613a86c5d9 Remove deposit and issuanceDef fields
Remove deposit field from the FungibleAsset interface, and moved it into a fixed reference to
amount.token.issuer.
Remove issuanceDef field and replace it with amount.token.
2016-11-01 14:49:57 +00:00
Jose Coll
74dc0b7154 Exposed Vault Transaction Note functionality via RPC. 2016-11-01 12:46:41 +00:00
Jose Coll
d9f0a161e4 Addressed comments in PR review. 2016-11-01 12:05:48 +00:00
Jose Coll
c5500caf98 Minor changes to address PR feedback and comments 2016-11-01 11:39:11 +00:00
Jose Coll
308d7c1df7 Added PluginServiceHub for use by Corda plugin service extensions. 2016-10-31 17:15:06 +00:00
Jose Coll
96007cd777 Changed transaction notes type DB from 'blob' to 'text' 2016-10-31 15:07:34 +00:00
rick.parker
5898a15579 Upgrade H2 to 1.4 to fix curious file corruption issue encountered by Patrick. 2016-10-28 17:39:10 +01:00
Clinton Alexander
c3533bac7d Improved error reporting. 2016-10-28 13:46:43 +01:00
Clinton Alexander
fdbd67db5c Added some more error logging to Node. 2016-10-28 13:46:43 +01:00
Jose Coll
2ce310050e Revert incorrect merge commit. 2016-10-28 10:28:15 +01:00
Jose Coll
b46de0b964 Merge remote-tracking branch 'origin/colljos-vault-transaction-notes' into colljos-vault-transaction-notes
# Conflicts:
#	core/src/main/kotlin/com/r3corda/core/node/services/Services.kt
#	core/src/main/kotlin/com/r3corda/core/testing/InMemoryVaultService.kt
#	node/src/main/kotlin/com/r3corda/node/services/vault/NodeVaultService.kt
2016-10-28 09:59:58 +01:00
Jose Coll
369214a747 Additional method on VaultService to add notes to a transaction
Additional method on VaultService to retrieve notes for a transaction
2016-10-28 09:57:33 +01:00
Jose Coll
504ec42720 Additional method on VaultService to retrieve notes for a transaction 2016-10-27 16:35:26 +01:00
Jose Coll
f2e98ffba5 Merge branches 'colljos-vault-transaction-notes' and 'master' of https://bitbucket.org/R3-CEV/r3prototyping into colljos-vault-transaction-notes 2016-10-27 14:59:37 +01:00
Jose Coll
7d080c39df Merge remote-tracking branch 'remotes/origin/master' into colljos-vault-code-clean-up-refactor
# Conflicts:
#	core/src/main/kotlin/com/r3corda/core/contracts/Structures.kt
#	node/src/test/kotlin/com/r3corda/node/services/NodeSchedulerServiceTest.kt

Fixed failing CommercialPaper test
(caused by re-use of same database transaction context for vault across two different transaction participants)
2016-10-27 12:56:08 +01:00
Clinton Alexander
8f1329b03f Merged in clint-capletnode (pull request #413)
Moved the Corda Caplet to Node to clear out root src dir.
2016-10-25 09:37:32 +00:00
Clinton Alexander
af902ee4df Removed redundant whitespace. 2016-10-24 18:36:19 +01:00
Clinton Alexander
c18ed4b402 ProtocolLogicFactory now initiated before it is used. 2016-10-24 17:56:16 +01:00
Clinton Alexander
f92f7d8d56 NodeSchedulerService no longer takes a default protocol logic ref factory (because otherwise no protocols are whitelisted) and instead now uses the one constructed in the node. 2016-10-24 17:56:16 +01:00
Clinton Alexander
546f3e2bbf Removed dead plugin reference. 2016-10-24 17:56:16 +01:00
Clinton Alexander
2f5efb34d6 Removed the RatesFixProtocol and dependent code and moved to the IRS repo. 2016-10-24 17:56:16 +01:00
Clinton Alexander
b197a8fa66 Fixed comment on function definition. 2016-10-24 17:41:21 +01:00
Clinton Alexander
19a53ea12d Added prerequisite for using the test clock. 2016-10-21 17:29:59 +01:00
Clinton Alexander
71e1c39622 Fixed type of useTestClock. 2016-10-21 16:42:00 +01:00
Clinton Alexander
8631a64c66 Moved capsule to node to remove it from src. 2016-10-21 14:17:05 +01:00
Clinton Alexander
8f326824f3 Test fix and review fix. 2016-10-21 12:09:21 +01:00
Clinton Alexander
cbb8aa74f9 Replaced clock object with clock class and added documentation. 2016-10-21 11:32:29 +01:00
Clinton Alexander
54e002f654 Clock now instantiates via reflection to allow demo clocks to be passed in. 2016-10-21 11:32:29 +01:00
Clinton Alexander
622b5cabf7 Fixed merge conflict. 2016-10-21 11:32:29 +01:00
Clinton Alexander
1d6b8de11e Added clock to the node 2016-10-21 11:32:29 +01:00
Clinton Alexander
201561497a Added clock to node configuration to allow for creating a demo with a different clock. 2016-10-21 11:31:18 +01:00
Clinton Alexander
0ee4f9c19b Added DriverNodeInfo to allow access to the host and port for the api address for use in integration tests. 2016-10-21 11:31:18 +01:00
Shams Asari
e2d6ace449 RPC client authentication using user/password from config file 2016-10-20 17:55:16 +01:00
Jose Coll
c7d98b8c6b Fixed items raised by MH in CRD-CR-58 code review. 2016-10-20 10:52:51 +01:00
Matthew Nesbit
30b7eec18c Remove the file based checkpoints and transactions from the tests.
Messages requiring redelivery to late registered handler persisted in database.

Remove spurious comment and make local val not var
2016-10-19 16:33:12 +01:00
Matthew Nesbit
8eee4afe7d Merged in mnesbit-cor-389-driver-remove-startClient (pull request #409)
Unify messaging services to have a database and not support client type connections.
2016-10-19 14:09:50 +00:00
Jose Coll
04920c9507 Additional method on VaultService to add notes to a transaction 2016-10-19 15:06:52 +01:00
Rick Parker
6c6d7f8546 Merged in bugfix-for-persistent-scheduler (pull request #410)
Fixed intermittent stack serialization issue with persistent scheduler.
2016-10-18 17:23:04 +00:00
Matthew Nesbit
4db1836996 Unify messaging services to have a database and not support client type connections when they should use the RPC connections. Also, push NodeInfo across to the driver via the web interface to remove that use of startClient.
Fix typo
2016-10-18 17:48:52 +01:00
rick.parker
8a3027ffd6 Fixed intermittent stack serialization issue with persistent scheduler.
Improved exception reporting when fiber serialization fails or other internal Quasar error to help with future Kryo errors when checkpointing.
2016-10-18 17:05:10 +01:00
Jose Coll
62dfea2a1a Re-factoring of OnLedgerAsset generateSpend code (moved to VaultService) 2016-10-17 17:58:26 +01:00
Patrick Kuo
3403d50168 Merged pat-cash-creation-ui into master 2016-10-17 16:10:53 +01:00
Rick Parker
6a20f32a7a Merged in persistent-scheduler (pull request #405)
Persistent scheduler
2016-10-17 12:35:40 +00:00
rick.parker
6a25fcfe8c Persistent scheduler, with race condition removed. 2016-10-17 13:33:32 +01:00
rick.parker
962fdba0f8 Make transaction -> statemachine id mapping persistent. 2016-10-17 11:33:29 +01:00
Patrick Kuo
d4362fbd78 New counterparty model and subscription mechanism to retrieve and track counterparty changes in network map
New transaction creation screen for creating new cash transactions, using party info source from the counterparty model.
2016-10-17 11:25:20 +01:00
Jose Coll
67b2d91b33 Re-factoring of CashBalances code (moved to VaultService) 2016-10-17 11:16:53 +01:00
rick.parker
02a9f8fe67 Remove SAME_THREAD executor and it's use in MockNetwork etc.
Remove all traces of unused optional Executor in messaging.
2016-10-12 12:02:28 +01:00
Matthew Nesbit
1f3b1f4df9 Transactions in database
Include basic unit tests of Transaction storage

Use Rick's column storage code as suggested in PR comments

Remove blank line
2016-10-11 17:49:15 +01:00
Shams Asari
e48e09f04e Session handshake optimised to carry the first send payload in the init message 2016-10-11 17:27:09 +01:00
Shams Asari
ac01b67549 Using the protocol ID for the protocol logger name 2016-10-10 13:45:43 +01:00
Mike Hearn
11bcaf5fb2 Minor: go back to using logging for the trader demo specific output (i.e. admit defeat with the ANSI renderer, which is not long for this world anyway) 2016-10-10 12:00:48 +02:00
Andras Slemmer
cf19ff37cd node: Add cleanup TODO on cash creation RPC call 2016-10-10 10:38:02 +01:00
rick.parker
50e613bb75 Clean up compiler warning and make database table names and columns more meaningful. 2016-10-07 18:05:54 +01:00
Matthew Nesbit
1e836edd78 Change ServiceType to a sealed class from an abstract class
Allow AdvertisedServices to have their own identity and keys. Also, rationalise legalIdentity onto the local node's NodeInfo which is available on ServiceHub

Fixup after rebase

Remove legal identity that was on storage service. Now access via myInfo.legalIdentity and key via keyManagement lookup.

Enforce singleton notary per node for now

Tidy up based upon Rick's suggestions

Handle PR comments

clean up imports

Fix typo

Fixup rename

Capitalise comment

Eliminate unused variable warning

Make changes based upon PR comments

Cleanup whitespace changes
2016-10-07 13:44:51 +01:00
Andrius Dagys
4e2f0e0ff9 Split out NodeConfiguration helpers into a separate utility class 2016-10-07 10:44:03 +01:00
rick.parker
2e3952ee1f H2 database exported via configurable port number. 2016-10-06 14:33:56 +01:00
Shams Asari
c3f824001d Removed unused ServiceRequestMessage class hierarchy and added sendRequest method 2016-10-06 10:27:35 +01:00
Shams Asari
307c93858b Using Checkpoint.id when storing Checkpoints 2016-10-05 18:30:46 +01:00
Andrius Dagys
6eb91ffe8b Minor refactoring and api doc update 2016-10-05 17:48:04 +01:00
Andrius Dagys
893f6e4f50 Updated config docs 2016-10-05 17:48:04 +01:00
Andrius Dagys
e5072a8854 FullNodeConfiguration: make use of the getOrElse helper 2016-10-05 17:48:04 +01:00
Andrius Dagys
727c3ac5fc Node: get artemisAddress and webAddress from the config rather than constructor parameters 2016-10-05 17:48:04 +01:00
Andrius Dagys
e5c0c975bd Remove hostNotaryServiceLocally config property – nodes need to specify the correct notary service type in extraAdvertisedServiceIds 2016-10-05 17:48:04 +01:00
Andrius Dagys
3b187a2171 Make Node override configuration and use FullNodeConfiguration so that no casting is needed 2016-10-05 17:48:04 +01:00
Andrius Dagys
fac12b4fce Remove NodeConfigurationFromConfig and replace usages with FullNodeConfiguration 2016-10-05 17:48:04 +01:00
rick.parker
5419e773dc Fix kotlin 1.0.4 error on use of Class.cast() 2016-10-05 13:59:18 +01:00
rick.parker
cd301c727e First working version with database persistence in MockNetwork/Node. 2016-10-05 12:03:28 +01:00
rick.parker
ec975b0426 Hibernate ORM implementation for states. 2016-10-05 11:40:27 +01:00
Andras Slemmer
3bb96f3f3e node: Fix after rebase 2016-10-05 10:40:18 +01:00
Andras Slemmer
8e471c6768 node: Address review comments 2016-10-05 10:40:18 +01:00
Andras Slemmer
5af0e97444 Refactor explorer and friends to use RPC, remove NodeMonitor* 2016-10-05 10:40:18 +01:00
Patrick Kuo
c57229a944 New gradle task for packaging certificate singing request utility jar. 2016-10-04 16:56:18 +01:00
Shams Asari
6b97fbb79f Removed ValidatingClient as notary behaviour is not client configurable 2016-10-04 15:20:36 +01:00
Shams Asari
5e6533eb8a Better use of Futures 2016-10-04 14:11:43 +01:00
Ross Nicoll
53ecb0ecd9 Constrain class type passed to registerProtocolInitiator() 2016-10-04 12:57:22 +01:00
Andrius Dagys
5efa0fd5b3 Advertised services now contain ServiceInfo which describes ServiceType and a service identifier. This will be used, e.g. for grouping distributed notary nodes into the same service cluster. 2016-10-04 11:36:26 +01:00
Matthew Nesbit
76808d36c3 Store protocol checkpoints in the DB, except during Single threaded MockNetwork activity, where we still use the file system based checkpointing. Make the Checkpoint acess a Sequence not an Iterable, so that we don't end up with all the checkpoints permanently resident in memory.
Split up storage initialisation so that there is less code copying in MockNode

Add header comment to DBCheckpointStorage class

Respond to PR comments

Resolve PR comments

Rename iterator on checkpoints

Fix typo

Fixup checkpoints in DB logic after Shams's PR

Delete duplicated code
2016-10-03 17:56:58 +01:00
Shams Asari
67fdf9b2ff Automatic session management between two protocols, and removal of explict topics 2016-10-03 15:21:27 +01:00
Andrius Dagys
b3f3ee0562 Added a json serializer for PublicKeyTree
Typo fixes, other minor refactorings
2016-10-03 11:09:36 +01:00
Andras Slemmer
43d18d46bb Add PartiallyResolvedTransaction to client 2016-10-03 10:17:41 +01:00
Clinton Alexander
a740167100 Merged in clint-mvcc (pull request #366)
Improved concurrency of H2 database with config
2016-09-28 16:51:27 +01:00
Andras Slemmer
5b10c207e0 Add StateMachine -> Recorded TX mapping stream and emit events on transaction records 2016-09-28 11:46:37 +01:00
Andras Slemmer
6c96517f6f core, node: Add RPC calls, change RPC init order 2016-09-28 10:32:22 +01:00
Patrick Kuo
8f00ec03a3 Checks for SSL certificate on Node startup 2016-09-27 10:15:09 +01:00
Rick Parker
46d6749616 Merged in persistence-support-in-mock-node (pull request #371)
Persistence support in MockNode
2016-09-26 15:12:59 +01:00
rick.parker
cb1fa83b67 Fix up database persistence to work with MockNetwork/MockNode without getting tangled up in the ThreadLocals. 2016-09-26 14:54:00 +01:00
rick.parker
16eda06095 Fix erroneous log statement that corrupts the logs. 2016-09-26 12:57:01 +01:00
Andras Slemmer
7e7bf08062 Rename stateMachineRunId properties to id, remove unused fiberId 2016-09-26 10:40:18 +01:00
Andras Slemmer
cfa5878ea2 Add StateMachineRunId, type for SMM Changes 2016-09-26 10:40:18 +01:00
Matthew Nesbit
a964073c2f Track message id's to deduplicate replays. Widen the auto-acknowledgement window of Artemis back to the default.
Use synchronized wrapper over set.

Drop discard message to trace level logging.

Fix code layout

Use lazy trace extension method

Track message id's to deduplicate replays. Widen the auto-acknowledgement window of Artemis back to the default.

Use synchronized wrapper over set.

Include tx message unique id in checkpointed data.

Add test for checkpointed resend

Fix bug in not getting UUID off message.

Tidy formatting

Add explanation comments to test asserts

Put unique id even on Client messages.

Tidy formatting
2016-09-26 10:12:50 +01:00
Matthew Nesbit
074964f919 Track message id's to deduplicate replays. Widen the auto-acknowledgement window of Artemis back to the default.
Use synchronized wrapper over set.

Drop discard message to trace level logging.

Fix code layout

Use lazy trace extension method
2016-09-22 15:18:24 +01:00
Patrick Kuo
eee18b55f5 Moved certificates path to node configuration 2016-09-22 14:28:12 +01:00
Ross Nicoll
54991c90a1 Merged in rnicoll-dictionary (pull request #369)
Correct typos, add custom dictionary
2016-09-22 09:52:28 +01:00
Clinton Alexander
58c1ab4562 Changed DB store type to MV store. 2016-09-22 09:37:03 +01:00
Patrick Kuo
f7193fee54 fix ArtemisMessagingServer certificate path 2016-09-21 17:50:26 +01:00
Ross Nicoll
80ccf4df34 Change keypair to "keyPair"/"key pair"
Change "keypair" to "keyPair"/"key pair" to correctly indicate it is two words,
not a single word.
2016-09-21 10:50:28 +01:00
Ross Nicoll
d38392093f Rename wallet monitor service to node monitor service 2016-09-21 10:26:20 +01:00
Ross Nicoll
ebda724f14 Change references to 'wallet' with 'vault' 2016-09-20 18:14:53 +01:00
Andras Slemmer
2640e600c8 Merged in aslemmer-node-explorer (pull request #311)
explorer ui v0.2
2016-09-20 12:02:09 +01:00
Patrick Kuo
9b4bf32fdc client certificate signing utility 2016-09-20 10:51:09 +01:00
Andras Slemmer
01d879772d client, explorer: Rearrange/add tx screen columns 2016-09-19 15:05:23 +01:00
Andras Slemmer
041c33a167 client, node: Handle snapshot in explorer 2016-09-19 15:05:23 +01:00
Andras Slemmer
4b74d94001 node: Fix compile after rebase, small typo fix 2016-09-19 15:05:22 +01:00
Andras Slemmer
c04a3401c3 client, node: Fix compile error after rebase 2016-09-19 15:05:22 +01:00
Andras Slemmer
3042407250 node: Better diagnostics for exit generation in WalletMonitorService 2016-09-19 15:05:22 +01:00
Andras Slemmer
eb82e946d0 node: Expose LedgerTransactions instead of SignedTransactions in WalletMonitor 2016-09-19 15:05:22 +01:00
Clinton Alexander
7d7418095e Increased timeout to avoid spurious timeouts. Added MVCC flag to allow
better concurrency and prevents deadlocks when multiple transactions are
occurring at once, as has happened on Vega.
2016-09-19 13:45:54 +01:00
Matthew Nesbit
478cb58dd6 Delay State Machine fiber start until network map cache is fully populated.
Add some unit tests of the late init behaviour.

Fix merge error

Change statemachine logic to use an in-memory only flag on checkpoints to track their materialisation during startup.

Add annotations for test method

Fix possible race condition on storing checkpoint objects

Correctly create checkpoint

Use then helper function

Cleanup imports
2016-09-19 12:15:33 +01:00
rick.parker
476db876d9 Move db commit to after "protocol completed" future is set.
Move db commit to after "protocol completed" future is set.
2016-09-16 13:56:49 +01:00
rick.parker
236a47104f Persitent network map and key service. Temporary persistence workaround for scheduler. 2016-09-16 12:14:56 +01:00
Patrick Kuo
1388747484 Permissioning server: added new node properties in node config for certificate signing request 2016-09-16 11:42:33 +01:00
Mike Hearn
4d83f1489f Add a client library that provides an RPC mechanism for talking to the Corda node.
The RPC mechanism uses message queues and is essentially conventional except for the fact that it supports marshalling observables. An observable encapsulates a stream of ongoing events, and server-side observables sent to the client are automatically bound to message queues and managed by Artemis.
2016-09-16 10:13:21 +01:00
Shams Asari
8ea20dd0d2 Removed session IDs from the send and receive methods of ProtocolLogic and are now partially managed by HandshakeMessage 2016-09-14 15:26:55 +01:00
Shams Asari
f314bab6c8 Replacing the two params of AbstractNodeService with single ServiceHubInternal 2016-09-13 11:52:31 +01:00
Rick Parker
53de66a23d Merged in cor-344-persistence-jdbc-transactions (pull request #353)
Add database transactions ready for more widespread persistence.
2016-09-13 10:48:48 +01:00
rick.parker
27cb1c3597 Introduce database transactions around message handling, web API and in protocols. 2016-09-13 10:47:50 +01:00
Andrius Dagys
422a766c1a Minor persistent uniqueness provider tweak 2016-09-13 10:37:53 +01:00
Mike Hearn
ee637b79e2 Merge branch 'mike-fix-wms-for-k104' 2016-09-12 16:40:11 +01:00
Mike Hearn
0e37547af0 Rename ArtemisMessagingClient to NodeMessagingClient to make the purpose clearer once we start landing the clientrpc framework. 2016-09-12 13:16:45 +01:00
Mike Hearn
f6def0ef8f Minor: fix build for Kotlin 1.0.4 pre-release. It is stricter about some dubious code. 2016-09-12 12:18:35 +01:00
Andrius Dagys
0ed6a0ef4d Added a persistent uniqueness provider, backed by a JDBCHashMap.
Enabled a single node persistent notary.
2016-09-12 10:15:03 +01:00
rick.parker
03a04d10ca Remove use of interrupts to in ClockUtils 2016-09-09 16:45:49 +01:00
rick.parker
879802f7fd JDBC backed persistent hash map implementation. 2016-09-09 14:01:05 +01:00
Matthew Nesbit
bf0721868e Move Interest Rate related classes out of :node to reduce dependency of :node module on any specific contract. (Currently only WalletMonitorService and CashBalanceAsMetricsObserver stop me removing the compil dependency of :node on :contracts rather than :core). This has required that I modify fixing protocol to require information on what class of Oracle to use. 2016-09-09 11:31:08 +01:00
Matthew Nesbit
9518c38f29 Ensure integration tests in modules are in separate configurations and not directly called from build or installDist. 2016-09-08 15:28:04 +01:00
Matthew Nesbit
245d6ce21f Use standalone Corda main class and configuration in the Driver, rather than a separate class.
Better check for Notary services
2016-09-08 12:44:12 +01:00
Mike Hearn
d8d639f192 Merged in mike-small-tweaks (pull request #337)
A few small tweaks
2016-09-08 12:40:14 +02:00
Matthew Nesbit
1f2a6d256e Simplify the FullNodeConfiguration now that an explicit identity for the NetworkMapService isn't a problem.
Use consistent if style

Don't include NetworkMapAddress in config if hosting locally
2016-09-07 15:35:50 +01:00
Matthew Nesbit
2e1952a8a7 Get rid of the fake NodeInfo used to identify the NetworkMapService node.
Remove old comment
2016-09-06 18:25:12 +01:00
rick.parker
35274cd15c Refactor network map service in preparation for persistence.
Removed currently superfluous clock.
2016-09-06 18:21:06 +01:00
Mike Hearn
2d40c7e6dc Minor: make the logger in the standalone node private to avoid accidental screwups due to name conflicts (mental or read) 2016-09-06 18:40:39 +02:00
Matthew Nesbit
58aa933307 My recent PR#325 contained a couple of mistakes. In particular on Unix, but not windows the shutdown hook unregister can give a non-fatal exception during some tests. Also, I got the point of client messaging service stop registration wrong, which was leading to the server shutting down teh client session ahead of the proper stop sequence. 2016-09-06 16:26:31 +01:00
Andras Slemmer
9e993c5b86 Merged in aslemmer-generators-fixes (pull request #300)
Aslemmer generators fixes
2016-09-06 14:19:28 +01:00
Andras Slemmer
9ff1ad7769 node: Fix redelivery race 2016-09-06 13:54:58 +01:00
Andras Slemmer
cc556cde6f ndoe: Fix message duping on redelivery 2016-09-06 13:54:58 +01:00
Mike Hearn
9d83a9b6d2 Minor: move transaction types out of the contracts package and into a new transactions package 2016-09-06 14:20:32 +02:00
Andras Slemmer
4923e33a7d node: Remove unnecessary @Suppress 2016-09-06 09:52:43 +01:00
Andras Slemmer
fc7000c152 node: Fix race in Clock.doInterruptibly by not relying on version counter 2016-09-06 09:52:43 +01:00
Matthew Nesbit
11efe8ca1b Extend Rick's closeOnShutdown so that all the shutdown that was being done manually is done through the same mechanism. Thus allowing for a consistent reverse ordering and hopefully preventing DB shutdown happening ahead of serverThread shutdown.
Follow Rick's PR suggestions

Preserve comment about abitrary timeout on serverThread stop
2016-09-06 09:18:59 +01:00
Andras Slemmer
d8ae07e771 node-driver: Use anyAddress for RandomFree port allication 2016-09-05 17:29:44 +01:00
Andras Slemmer
9836edd191 Revert reuseaddr 2016-09-05 16:08:58 +01:00
Andras Slemmer
6b37048a14 node-driver: Remove reuseAddress = true as it breaks tests on osx 2016-09-05 15:43:19 +01:00
Shams Asari
97e1a59770 Refactored FiberRequest into cleaner ProtocolIORequest and fixed checkpoint regression 2016-09-05 14:42:54 +01:00
Matthew Nesbit
eb8510e7cc Some integration tests seem to be getting exceptions that suggest the ArtemisMQ session has been closed down already. Looking at the client code it is clear two threads can call stop and interfere with each other. Therefore this fixes the running flag logic. 2016-09-05 14:13:38 +01:00
Andras Slemmer
637a41401d node-driver: Reuse address when polling for port, poll for correct condition\(!\) 2016-09-05 11:04:31 +01:00
Mike Hearn
3854fec17f Testing: Make PortAllocation set SO_REUSEADDR to avoid CI conflicts 2016-09-05 11:22:00 +02:00
Ross Nicoll
868b23a923 Move simulations to top level 2016-09-01 11:15:05 +01:00
Ross Nicoll
07f44e9e2a Move test code from node to test-utils 2016-09-01 11:15:05 +01:00
Andras Slemmer
86d6ee0110 node: Cash Issue doesn't require notary 2016-09-01 09:36:06 +01:00
Andras Slemmer
cfebccc495 node: Remove TransactionBuildResult.Complete, add pretty printing of ServiceToClientEvent 2016-09-01 09:36:06 +01:00
Ross Nicoll
232db9a1fd Move test utilities into their own package
This moves a lot of the test support code into its own package which is only imported for tests,
so it's not shipped as a part of core Corda. The node currently depends on this support code to
compile, although future work could try to separate this out. This change highlights that parts
of production code is dependent on test elements (i.e. dummy keys), and makes it harder for
such accidental crosses to occur later.

An integration test category is also added as part of this work, to contribute towards COR-345.
2016-08-31 15:40:54 +01:00
Clinton Alexander
5439e0980f Merged in clint-driver-debug-fix (pull request #308)
Fixed driver debug mode.
2016-08-31 11:31:02 +01:00
Clinton Alexander
0c4a80453a Used lists instead of strings for appending to JavaArgs in driver. 2016-08-30 14:01:54 +01:00
Matthew Nesbit
8756b49794 Add switchable HTTPS to Node web server
Explain change of cipher

Include extracted Dev Corda Root certificate so that it can be installed by HTTPS users.
2016-08-30 13:07:40 +01:00
Clinton Alexander
82b416cb88 Fixed driver debug mode. 2016-08-30 12:03:31 +01:00
Ross Nicoll
ad8ffca0b4 Add CommitTransactionProtocol
Add new protocol which manages the entire process of taking a signed transaction ready
for notarisation, through notarisation and onto recording it both locally and informing
remote nodes.

This protocol also optionally can include the ClientToServiceCommand which triggered a transaction
being created, to give the remote nodes context on why a change occurred (i.e. "You are being sent
£100")
2016-08-25 16:30:39 +01:00
Matthew Nesbit
089ba2cb69 Only NetworkMapServer addresses can be publicly manufactured. Use identity publick key as addressing, with only bridges using the HostAndPort information
Fixup after rebase and fix issue with checking previous deployment of bridges

Correct comments on ArtemisMessagingClient constructor

Fixup rates fix demo

Get rid of when statements

Make NetworkMapCache send modify as well as add//remove events. Make inboxes for nodes persistent.

Suppress warnings

Fix message acknowledgement so that it actually consumes messages properly.

Change queueName to SimpleString to stop lots of wasted conversions

Get rid of spurious import

Tidy up and add comments

Update to include comments on PR

Remove unnecessary import
2016-08-25 15:56:50 +01:00
Ross Nicoll
f9880a4990 Pre-filter states passed to generateSpend()
Pre-filter states passed to generateSpend(), so that requests from the UI to spend cash only ever
spend cash with the correct issuer.
2016-08-25 13:20:12 +01:00
Ross Nicoll
dc2f4055fc Restrict cash exit commands to working on cash held by the issuer
Remove the ability to exit cash not held by the cash issuer; this solves a number of problems:

* Ensuring owner of the cash is aware of the funds being destroyed
* Determining where to send any change resulting from partial exiting of funds
* Auditing the destruction of funds
2016-08-22 17:17:19 +01:00
Clinton Alexander
668fecfea7 Merged in clint-no-notary-error (pull request #283)
Fixed bug when incorrect notary service type is specified.
2016-08-22 16:41:38 +01:00
Andras Slemmer
1a2c712a48 node-driver: Make debugging optional and off by default 2016-08-19 17:05:00 +01:00
Andras Slemmer
9d22d66548 node-driver: Fix some kdocs. Also, full stops! 2016-08-19 17:05:00 +01:00
Andras Slemmer
f4577b743e node-driver: Add startClient, startLocalServer 2016-08-19 17:05:00 +01:00
Andras Slemmer
5f33bedc13 node-driver: Polling doesn't timeout, just prints warning 2016-08-19 17:05:00 +01:00
Andras Slemmer
9cbdf001fb node-driver: Return Futures instead of waiting for full node startup 2016-08-19 17:05:00 +01:00
Clinton Alexander
7b3003ea04 Added TODO for further work 2016-08-19 16:41:49 +01:00
Matthew Nesbit
696b9741dd Remove ClashingThreads exception by tightening up unique id on LinearState to be a secure random value, with constraints that it cannot be duplicated. Also, rename to linearId rather than the confusing thread.
Try providing a helper interface to encourage enforcing LinearState rules

Fixup after rebase

Change to using Clauses for verifying LinearState standard properties

Fix whitespace change

Tidy up ClauseVerifier after PR comments

Change from SecureHash to a TradeIdentifier class

Change TradeIdentifier to UniqueIdentifier
2016-08-19 11:52:16 +01:00
Mike Hearn
6adebd3fa8 Clarify exception handling in the SMM add method a bit. 2016-08-18 18:19:46 +01:00
Mike Hearn
db3aa1491c Upgrade Quasar to 0.7.6 and fix an exception handling bug in SMM that it revealed (if an exception was thrown immediately on protocol startup we let it leak instead of capturing it in the future. 2016-08-17 14:43:45 +01:00
Ross Nicoll
a9ec3c253e Merged in rnicoll-notify-tx (pull request #282)
Add observable for transactions being stored
2016-08-16 14:50:55 +01:00
Clinton Alexander
77f5689468 Renamed variable for clarity. 2016-08-16 13:54:08 +01:00
Clinton Alexander
5d68210355 Driver now correctly resolves quasar path on Windows. 2016-08-16 13:26:38 +01:00
Clinton Alexander
85dce390f4 makeNotaryService now enforces post condition with type system. 2016-08-16 09:21:29 +01:00
Clinton Alexander
a74c491745 Fixed a bug where if NotaryService.Type is used as an advertised service no notary is created and no obvious error occurs. 2016-08-16 09:18:33 +01:00
Andras Slemmer
9d9164980e Merged in andrius-driver-fix (pull request #280)
DriverTest fix: get quasar.jar location from the classpath
2016-08-15 17:31:02 +01:00
Clinton Alexander
c5a6d11976 Merged in clint-node-driver-conf-fix (pull request #275)
Config will error earlier if the reference.conf file is missing.
2016-08-15 15:53:50 +01:00
Mike Hearn
a451000623 Merged in mike-fix-artemis-threading (pull request #276)
Messaging layer improvements
2016-08-12 19:07:54 +02:00
Mike Hearn
3d391ec8c2 Add unit tests for the resolve transactions protocol 2016-08-12 17:14:54 +02:00
Ross Nicoll
a3d37a4d00 Require notary to be explicitely stated on each transaction 2016-08-12 15:51:04 +01:00
Ross Nicoll
17ae349f4d Remove support for timestamp commands 2016-08-12 13:51:34 +01:00
Mike Hearn
cba0427e01 Make ArtemisMessagingClient blocking and require the user to directly enter a message loop. This cleans up a few things and ensures we can't get caught out by messages being arbitrarily re-ordered as they pass through any Artemis thread pools. 2016-08-12 14:06:03 +02:00
Ross Nicoll
8346c58d4c Add observable for transactions being stored
Add observable for transactions being stored, so the UI can show transactions as they're received, rather than being
limited to the summarised version available from the wallet service.
2016-08-12 11:58:17 +01:00
Andrius Dagys
cd344058d2 Driver: get quasar.jar location from the classpath instead of a constructor parameter 2016-08-12 11:41:15 +01:00
Mike Hearn
ac81d2aa32 Messaging layer improvements:
- Fix thread safety issues in ArtemisMessagingClient. The Artemis API isn't thread safe, but that isn't well documented and it will happily invoke callbacks in parallel.
- Add discussion of how we tackle threading currently in the codebase and make a few other improvements.
- Add a shutdown hook so we stop properly when the user presses ctrl-c
2016-08-11 14:16:05 +02:00
Clinton Alexander
475322b14f Config will error earlier if the reference.conf file is missing. 2016-08-10 17:22:20 +01:00
Andras Slemmer
00b439802b node-driver: Write node.conf explicitly 2016-08-10 14:35:23 +01:00
Andras Slemmer
1b98c32579 Merged in node-driver (pull request #253)
Node driver
2016-08-10 14:21:16 +01:00
Ross Nicoll
cf40e0db70 Add WalletMonitorService 2016-08-09 18:24:14 +01:00
Andrius Dagys
8386100677 Remove BriefLogFormatter as the formatting is now handled by Log4j configuration. Introduce LogHelpers which now handles the custom log level setting for specific loggers. 2016-08-09 17:31:27 +01:00
rick.parker
d883b3f134 First working hand-rolled persistent wallet
First working Exposed-assisted persistent wallet

Cleaned up Exposed-based persistent wallet

Cleaned up warnings

Fixed up some generic types

Improved comments

Fix up TODO comment

Hikari and config integration

Fix existing tests

Clean up after looking at PR

Clean up commented out lines

Fix initialisation of IRS demo leaving database open

Fix up after rebase

Review feedback.  Main change is lazy wallet iteration.

Rebased and incorporated config changes.

Use standardised config loading.  Make wallet cash test use persistent wallet.

Added test to ensure wallet retains state in database across instance creation.

Tidy up whitespace and fix bug in test.
2016-08-09 16:41:32 +01:00
Andras Slemmer
f20322136f Revert "Merged in node-driver (pull request #253)"
This reverts commit af893e0af5, reversing
changes made to 7357597501.
2016-08-09 16:19:18 +01:00
Andras Slemmer
9df7a0faf0 node-driver: Fix compile error 2016-08-09 15:38:33 +01:00
Andras Slemmer
5b2c687c64 node-driver: Hacky fix of startup race condition 2016-08-09 15:27:27 +01:00