Skip to content

canton v0.25.0

Compare
Choose a tag to compare
@canton-machine canton-machine released this 22 Jun 10:15
a0a2430

Release of Canton 0.25.0

Canton 0.25.0 has been released on June 22, 2021. You can download the Community edition from our github release section. The Enterprise edition is available on Artifactory.
Please also consult the full documentation of this release.

Summary

This release is an important step towards our general availability deadline, featuring improved
domain operational procedures, domain high availability and much better error reporting.

What’s New

Domain Entity Onboarding

We have been redesigning how domains are initialized and how new domain entities are
onboarded to a running system. Previously, the process was hard-coded and internal to Canton.
We now generalised this process and moved it into a set of console commands.

The new set of commands allows now to bootstrap a domain with multiple sequencers, add
new sequencers on the fly to a running domain, or add new mediators for high-availability
purposes.

A side benefit of the domain entity onboarding overhaul is that the Postgres and Oracle domain integrations
in the Enterprise release now support multiple sequencer processes, providing active-active domain
high availability.

Configuration Changes

There have been a few changes to how Canton can be configured:

We've discontinued the configuration parameter canton.<node-type>.<node-name>.storage.database-name as
it didn't work well across different database connectivity configurations.
Instead, use canton.<node-type>.<node-name>.storage.config.properties.database-name (postgres only) or
canton.<node-type>.<node-name>.storage.config.url to set the database name.
See the examples in 03-advanced-configuration for further information on how to set database names.

We've introduced a new config parameter canton.<node-type>.<node-name>.storage.max-connections.
It allows for setting the maximum number of db connection for that node. For participant
nodes, it will automatically split the specified number of connections between Canton,
ledger api server, and indexer.

The new parameter has lower precedence than the existing low-level parameter
canton.<node-type>.<node-name>.storage.config.num-threads; so if the low-level parameter has been defined in
existing deployments, the number of connections won't change.

Improved Error Reporting

Canton now increasingly provides error messages with error codes on failures. The error codes
are documented in the corresponding error code section of our manual.
Each error code contains information whether an error is fatal or retryable, which should allow
any application to automatically classify the errors accordingly.

In particular, the ledger Api command submission service will now report many errors synchronously with detailed error
messages. However, this is still a preview feature and we'll polish the experience according to the user
feedback we get.

Minor Improvements

  • We've added the utils.generate_daml_script_participants_conf macro to export participants config for Daml script.
    This should improve the user experience when using Daml script with Canton, as you can generate a Daml script
    input configuration from a Canton process.
  • We've extended pruning to the sequencer and mediator stores.
    You can now keep your domain tidy and remove archived data by invoking the pruning commands on the domain.

Security and Bugfixes

  • Eliminated a race condition when handling sequenced events from the domain that could crash a participant.

Compatibility

Dependency Version
Java Runtime OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9, mixed mode, sharing)
DAML SDK 1.14.0
Postgres postgres (PostgreSQL) 11.12 (Debian 11.12-1.pgdg90+1)
CCF 0.14.2
Ethereum besu/v20.10.4/linux-x86_64/oracle_openjdk-java-11
Fabric 2.2.2

What's Coming

We are currently working on

  • Oracle database support
  • Improving stability and long-running behaviour, in particular with pruning.
  • Increase negative test coverage and improve our ability to deal with other outages.
  • Supporting large number of participants and parties with privacy.
  • Better error codes and fault documentation.
  • Support for causality enforcement.