* Provide an optional configuration setting to specify the minimum platform version to use in the network params file.
* Leave Cordform signature intact.
* Leave previous Gradle Plugin called signature intact.
* Incorporating feedback from PR review.
* Added minimum platform version validation check.
* Removed final 2 references to "default"
* Added changelog entry.
* Separate out Checkpoint serialization
* Update kdocs
* Rename checkpoint serialization extension methods
* Fix bungled rename
* Limit API changes
* Simplify CheckpointSerializationFactory
* Add CheckpointSerializationScheme to API checker
* CheckpointSerializationScheme should not be implemented
* Move checkpoint serialisation to internal package
* Remove CheckpointSerializationScheme from api-current
* Quarantine internal classes
* Remove checkpoint context from public API
* Remove checkpoint context from public API
* Fix test failures
* Completely decouple SerializationTestHelpers and CheckpointSerializationTestHelpers
* Remove CHECKPOINT use case
* Remove stray reference to checkpoint use case
* Fix broken test
Also the --network-root-truststore default value has been corrected to be relative to the base dir.
The cliutils has been updated to always convert Path cmd line params to be absolute
* Make blobinspector use picocli base class
* Updated Documentation
* Update and harmonise documentation
* Give the table a bit more padding to help with merge conflicts
* Correct capitalisation of short options
* Some grammar changes
* Fix link in shell documentation
* The TypeSafe config parser wants extensions.sshd to be present in the config even though extensions is nullable
* Temp commit
* Make Standalone Shell use picocli
* Simplify gradle config for bootstrapper
* Fix logging dependency issues
* Revert "Temp commit"
This reverts commit f4efafcc9d.
* Fix quasarExcludeExpression
* Correct bootstrapper configuration
* Correct CRaSH capitalisation in docs
* Fix unit tests
* Fix help text typo
* Make logging level case insensitive
* Fix CRaSH capitalisation in help text
* Fix unit tests
* Added fix and associated unit test.
* Fixed broken unit test + added another test case + used NoOpFlows + use Mock output object to assert correct result output.
* Remove unnecessary additional println.
* Minor cleanup in test code.
* Relax nameFragment matching to cater for fully qualified and simple Flow classname specifications.
* Remove superfluous check.
* Minor fix + added additional Unit Test cases to cover all scenarios.
* Reverted back to original behaviour + extra check to avoid ambiguity for exact match.
* Changes following final PR review comments.
* Modify Corda Node to use picocli
* Make --sshd parameter actually work
* * Some refactoring
* Fixing the issue with the --confg-file parameter
* Updating the tests
* Restore original devMode behaviour
* Update documentation
* Add return code to network bootstrapper
* Use the root jar for the shell alias for jars packaged with capsule
* Update Corda jar description
* Fix issue with logging not initialising early enough in node
Make initLogging overridable
Combine --verbose and --log-to-console options
* Tidy up
* Make sure all command line options are documented properly
* Fix compilation error
* Remove code that's no longer needed (single slash options no longer supported unless explicitly specified)
* Remove comment
* Remove pointless comment
* Log commandline arguments
* Address review comments
* Address more review comments
* Remove ConfigFilePathArgsParser
* Remove some unused importss
* Only display config when in dev mode
* Force Ansi ON if on Windows else set to AUTO.
* Make ExitCodes class open
* Add named caches and apply to NonInvalidingUnboundCache and all usages.
* Add named caches and apply to NonInvalidingCache and all usages.
* Add named caches and apply to NonInvalidingWeightBasedCache and all usages.
* Move NamedCache to core/internal
* Remove type `NamedCache` and `NamedLoadingCache`
* Suppressed 'name not used' warning, added comment, and fixed generic parameters on the buildNamed functions.
* Use `buildNamed` in all caffeine instances in production code. Not using it for caches that are created in test code.
* Add checks for the cache name
* Formatting
* Minor code review revisions
* Add shell extensions to CLI utils class and move into its own module
* Fix issue with completion script generation and slight refactor
* Fix autocompletion for logging level
* Delete uneeded comment
* More tidying up
* Make run function final
* Fixed an issue with the program being run twice.
* Address review comments
* ENT-2168: Add a shell command to check for an existing transaction
When a double-spend occurs the notary returns the hash of the consuming
transaction id. I've added a 'hash-lookup' shell command that matches
any recorded transactions on the node against this id hash to determine
whether the state has been consumed by this node (that could happen in certain race conditions).
* Basic alias and autocomplete installation for bash in network bootstrapper
* Address review comments
* Update completion file if out of date
* Refactoring
* Some more minor tweaks
* Use manifest revision rather than recalculating hash
* Add zsh autocomplete compatibility
* Actually write .zshrc file
* Fix some descriptions
* Only rewrite settings files if changes have been made, and make a backup if so. Some refactoring
* CORDA-1743: Remove `isDebug = true` from Node driver to speed-up integration tests execution.
* CORDA-1743: Undo removal of "isDebug = true" from the test that specifically checks for this condition.
* CORDA-1743: Address input from @shamsasari
* Make Node Explorer release its RPC connection on shutdown.
* Declare Explorer's login() function as tail-recursive.
* Replace lateinit rpcConnection with oridinary var.
* Notify the node when closing an RPC connection gracefully.
* Specify notary in CashIssueAndPaymentFlow
* Specify notary in PaymentRequest
* Address comments
* Default to the first notary in the `CashPaymentFlow`
This requires the class carpenter to be able to run in a "lenient" mode where it permits synthesised classes to implement interfaces with unimplemented methods.
The list of CorDapps jars is no longer passed in via the cmd line but is now expected to be placed in the bootstrapped directory.
Ended up being a bit of a refactor to cater for unit testing, and also tidied up the bootstrapper docs.
* Introduce new h2Settings config block which overrides h2Port
* H2 server listens on localhost by default
* Change is backward compatible and old h2Port option can still be used but that always listens on localhost now
* Update changelog and docs with H2 changes
As reported in [CORDA-1609](https://r3-cev.atlassian.net/browse/CORDA-1609),
`CordaRPCClientConfiguration.default` is not accessible from Java since
`default` is a reserved keyword.
As part of the refactor made in #2831, `CordaRPCClientConfiguration` went
from being a data class to an interface with a backing implementation of
type `CordaRPCClientConfigurationImpl`.
This resulted in Java users having to rewrite code that was on the form:
```java
final CordaRPCClient client = new CordaRPCClient(
nodeAddress, CordaRPCClientConfiguration.DEFAULT
);
```
to something like this:
```java
final CordaRPCClient client = new CordaRPCClient(
nodeAddress, CordaRPCClientConfiguration.Companion.default()
);
```
However, this does not work. The user would get a compilation error because
`default` is a reserved keyword in Java.
Since `CordaRPCClientConfiguration` has been made an interface, there is no
easy way of introducing a static final field on the interface from Kotlin.
Consequently, I've changed this back to using a `class` with a static field
named `DEFAULT` instead of the static method `default()`.
It should be noted that `default()` / `DEFAULT` is currently only used
internally to pass in default values in `CordaRPCClient.kt` and
`CordaRPCClientUtils.kt`. That said, it is exposed as part of our API
surface and consequently shouldn't be broken.
The latter means that in the above example, the user would actually not
have to provide the parameter at all:
```java
final CordaRPCClient client = new CordaRPCClient(nodeAddress);
```
As can be seen from the definition of `CordaRPCClient`:
```kotlin
class CordaRPCClient private constructor(...) {
@JvmOverloads
constructor(
hostAndPort: NetworkHostAndPort,
configuration: CordaRPCClientConfiguration = CordaRPCClientConfiguration.DEFAULT
) : this(hostAndPort, configuration, null)
```
The mentioned [refactor](7a077e76f0 (diff-0948c125db93a22263eb81eaf3161c17R65))
did not make it into the 3.1 release, so from an API-stability perspective,
this change can be applied without affecting our commitment to a
backwards compatible API..
* add experimental bootstrapper
(cherry picked from commit 63665d1)
refactor code to be less Azure Specific
Use node classes for notaries
add local docker backend
move to tools directoy
apply fixes for local docker RPC admin port
add extraParams field to context to allow dynamic backend selection
begin refactor to move all common node/notary functionality into single implementations
node and notaries now share the same code path as much as possible.
refactor network building logic into api class
port Main.kt to use new networkbuilder api
add gui
fix issues with local docker ports not being exposed on localhost
make push and instantiate async operations
add ability to "add" a node after network has been built to gui
tidy up backend selection via command line and GUI
allow region selection for AZURE instantiations
remove old network map based node.conf and network map dockerfile
tidy up constructors of the various node stage objects
tidy up artefact name
add network-name selection dialog
* print out help
* exclude transitive dep onto log4j to suppress error print out
* windows fixes for local docker
* fixes to allow "devs.XXXX" resource groups in line with the new devops policy of having named resourceGroups
* add extra logging around constructing azure backend
* Added missing plugin to enable publishing of artifact to Artifactory.
* Remove references to experimental blobinspector
* Remove disableDefaultJar for default jar.
* Add additional artifacts to be published.
* Progress Tracker doesn't mark as "green tick" a step which hasn't been set in the flow. Steps behind the current step, which were not processed ('an optional step') are now marked distingishly as green crossed sign for shell and as minus sign for ssh.
* Finality Flow sets the current step to NOTARISING only if the actual notarization is performed.
node-api now depends on this module and upcoming changes will use this as well rather than having to depend on node-api.
EnumEvolveTests.deserializeWithRename and EnumEvolveTests.multiOperations are temporarily ignored since their test resources can't be regenerated due to bugs.
It's no longer used as we've switched over to AMQP for RPC calls so
remove it from everywhere and only use it for checkpointing
* Wire up demo bench post Kryo removal
* Test Fixes
* rebase and fix tests
* Test Fix
* wip
* revert changes to api now we don't need to add annotations
* Client and server support for amqp
* Observable (and supporting) serialisers
Unit Tests
* Fixing tests
* Test fixes
* CORDA-847 - Update api doc with additon of @CordaSerializable annotation
* TestFixes
* review comments
* TestFixes
* Test Fix
* Test Fix
* Test Fix
* Test Fix
* Test Fix
* Test Fix
* TestFix
* Test Fix
* Review Comments
* CORDA-1393: Install `onError()` handler for folding action
or else `ErrorNotImplementedAction` will be invoked which is never a good thing
* CORDA-1335: Improve exception handling in `cleanUpOnConnectionLoss()`
* CORDA-1335: Try to trick the logic to pretend we are running in HA mode to have a chance of re-connecting.
* CORDA-1416: Make `NodeMonitorModel` code react to proxy changing.
* CORDA-1416: Workaround `CordaRPCOps.equals()` calls when listener dispatching change.
* CORDA-1416: Increase re-try interval to allow enough time for server to come back online.
* CORDA-1355: Properly close RPC connection we are moving away from.
* CORDA-1355: Unsubscribe on Error to prevent propagation of it downstream.
* CORDA-1355: For downstream subscribers ignore errors properly. Thanka to @exfalso for the hint.
This fixes: Transaction Updates do not flow after re-connect
* CORDA-1355: Bugfix eliminate duplicating items on "Transactions" blotter after re-connect.
* CORDA-1355: Bugfix eliminate double counting on dashboards.
* CORDA-1355: Bugfix eliminate same parties in dropdowns.
* CORDA-1355: Stop using `SecureHash.randomSHA256()` for painting widget icon.
Instead use combined SHA hash such that icon represents the whole population of trades.
That way two transactions blotters can be compared by a single glimpse at corresponding icons.
Also minor refactoring.
* CORDA-1416: Make RPC re-connection faster/more robust.
* CORDA-1416: Properly announce thet Proxy may not be available during re-connect and prevent UI crashing.
* CORDA-1416: Disable UI until RPC proxy is available.
* CORDA-1416: Correct typo.
* CORDA-1416: Unit test fix.
* CORDA-1416: GUI cosmetic changes.
* CORDA-1416: Correct spaces.
* CORDA-1416: Remove un-necessary overrides in CordaRPCOpsWrapper.
* CORDA-1416: Switch from using `doOnError` to installing an error handler upon subscription.
Current logic in `CashWidget` is not handling well updates done in close succession, i.e. less than 1 second.
And such frequent updates do indeed happen, e.g. from: `net.corda.client.jfx.model.ContractStateModel#cashStates`
where `list` is modified twice.
Also use `.toDecimal()` instead of `.quantity`to have amount represented in pounds rather than in pennies.
(cherry picked from commit 952cc35)
- Existing embedded Shell connects via RPC including checking RPC user credentials (before was a direct use of CordaRPCOps): in dev mode when console terminal is enabled, node created `shell` user.
- New Standalone Shell app with the same functionalities as Shell: connects to a node via RPC Client, can use SSL and run SSH server.
* Don't expose StartedNode via Node Driver
* Dont expose StartedNode/Abstract Node via MockNetwork
* Remove internal var from constructor as it doesn't hide from public api and change to internal initialisation method
* Update api
* Rename MockNode to StartedMockNode to avoid confusion
Update documentation
Update api-current.txt
* Fix typo
* Fix test failure
* Modify flow tests to use internal mock network and remove additional internal exposures from StartedMockNode
* Fix api-current
* Change InProcess and OutOfProcess to interfaces
* Explicitly declare MockNetwork parameters
Dont expose StateMachineManager
Move affected tests to use internal mock network
* Fix api-current
* Changes requested via review
* Fix IRS Demo address
* Fix api
* Remove internal attribute from classes in internal package
* Remove accidentally added code
* Move useHttps into NodeHandleInternal
* Remove duplicated code
* Update api-current
* Make webAddress internal on NodeHandle
* Make sure parameters in public api are explicitly specified
* Use correct address in IRS Demo
* Get webaddress from webserver handle
* Update api-current
* wire up and enforce max transaction size
* fixup after rebase
moved network parameter from AbstractNode to NodeProperties
* removed TODO
* fix broken import
* address PR issues
* remove API breaking change
address PR issue
* added max transaction size to driver and mock network.
address PR issues
* fix failing test
* added TODO
* fix verifier test
* fix spring driver build error
* Network parameters updates
Add two RPC methods networkParametersFeed and
acceptNewNetworkParameters. Implementation of client handling of network
parameters update event. Partial implementation of accepting new
parameters and installing them on the node as well as node startup with
updated parameters.
Move reading of network parameters on startup to separate
NetworkParametersReader class. Add tests.
Move NetworkParameters and NotaryInfo classes to core.
* Ignore evolvability test - to be fixed later
* Add documentation on update process
* Generate node directories as part of bootstrapping
* Include latest corda.jar in bootstrapper package
Remove SLF4J warnings on startup
* Changes post review
* More review changes
* Review changes
* Making docs clearer
With network parameters the CN is no longer needed to identify notaries. This frees it up to be used in the node's name alongside the other attributes.
Also, the identity generation logic has been simplified, removing the need to have magic string values for storing distributed identities in the keystore. Now there are just two alias prefixes: "identity" as it was previously, and "distributed-notary".
Copying of the node-info files moved out of Cordform and into NetworkParametersGenerator (which is now called NetworkBootstrapper). This class becomes an external tool to enable deployment of nodes in a test setup on a single filesystem.
* * Document TestIdentity entropy and enforce that it actually works
* Ledger/transaction DSL default notary with fresh key
* MockServices default identity with fresh key
* makeTestIdentityService now takes vararg
* Require cordappPackages for MockServices
* DSL automatic serialization init
* Improve error when two MockNetworks used
* * Make cordappPackages required by MockNetwork
* Default identity service in MockServices
* Make notarySpecs Java-friendly
* Take maximum message size from network parameters
* Add epoch handling
* Add handling of network parameters mismatch
Change NetworkMapClient and updater, add handle in
AbstractNode that results in node shutdown on parameters mismatch. Later
on we should implement proper handling of parameters updates.
Add tests of NetworkParameters wiring.
When node starts with compatibilityZone url configured it takes
networkParameters from the networkMap.
* Permit only one network parameters file
On node startup network parameters are read from node's base directory,
we permit only zero or one files to be there. If network map server is
configured the parameters can be downloaded at startup (if not present
in the directory already).
* Update docs on network map endpoints
* Redo legal name validation rules so that direction change chars are rejected
* Split name validation into minimal rules that all nodes can require, plus extended rules that the Doorman will apply (and we may need to change, without updating the entire network).
* Break down name validation rule sets to better match expectations
* Add test for nulls in Corda names
* JMX Jolokia instrumentation WIP (driverDSL, webserver, cordformation, hibernate statistics, access policy config file hardening)
* Cordformation changes to support jolokia agent instrumentation at JVM startup.
* Minor updates to reflect usage of Jolokia 1.3.7 (which uses slightly different .war naming)
* Use relative path reference in -javaagent to prevent problem with long path names with spaces.
* Fixed incorrect regex pattern and added assertion to test.
* Enable JMX monitoring.
* Reporting of Hibernate JMX statistics is configurable (by default, only switched on in devMode)
* Make Artemis JMX enablement configurable.
* Re-instate banning of java serialization.
* Improve JUnit.
* Fixes following rebase from master.
* Re-instated correct regex for picking up Jolokia agent jar.
* Fixed broken integration test.
* Updated documentation
* Updated following PR review feedback.
* Fixed compilation error caused by change in DriverDSL argument type.
* Fixed compilation error caused by change in DriverDSL argument type.
* Fail fast if jolokia-agent-jvm.jar is not located.
* Applied changes in cordformation following review feedback from CA.
The motivation for this came with the recent change that a default notary is started by the driver, which if ignored will leak the notary process.
Also, waitForAllNodesToFinish() has been replaced by a driver parameter.
network-parameters file read in by the node at startup, of which only the list of notaries is used. For now, the driver and MockNetwork have been updated to require notaries to be started first. This is so that the same set of network parameters can be defined for all the nodes.
CN in the legal name is not longer disallowed since it's no longer reserved for distributed notary names.
Single-node notaries now only have one identity, their main identity. Nodes part of a cluster continue to have two.
(Based off Kasia's work)
* [CORDA-442] let Driver run without network map
- Nodes started by driver run without a networkMapNode.
- Driver does not take a networkMapStartStrategy anymore
- a new parameter in the configuration "noNetworkMapServiceMode" allows for a node not to be a networkMapNode nor to connect to one.
- Driver now waits for each node to write its own NodeInfo file to disk and then copies it into each other node.
- When driver starts a node N, it waits for every node to be have N nodes in their network map.
Note: the code to copy around the NodeInfo files was already in DemoBench, the NodeInfoFilesCopier class was just moved from DemoBench into core (I'm very open to core not being the best place, please advise)
The current use of SSL RPC relies on access to the node's keystore file, and further to that some uses where using the NODE_USER to login on the p2p port.